将替换文本添加到程序创建的图像中

本文关键字:创建 图像 程序 替换 文本 添加 | 更新日期: 2023-09-27 18:28:00

所以我有一个ashx文件,它创建了一个写有文本的图像。

//create the image for the string
Font f = new Font("Arial", 15F);
Graphics g = Graphics.FromImage(b);
SolidBrush whiteBrush = new SolidBrush(Color.FromArgb(0,71,133));
SolidBrush blackBrush = new SolidBrush(Color.White);
RectangleF canvas = new RectangleF(0, 0, 105, 45);
g.FillRectangle(whiteBrush, canvas);
context.Session["test"] = randomString;
g.DrawString(context.Session["test"].ToString(), f, blackBrush, canvas);
context.Response.ContentType = "image/gif";
b.Save(context.Response.OutputStream, ImageFormat.Gif);

当被调用时,它会创建我想要的图像,但意识到它没有用于辅助功能的alt文本选项。

你知道如何在图像中添加替代文本吗?

在我的aspx页面中,我有这个:

 <asp:Image ID="myImage" class="styleimage" src="ImageMaker.ashx" runat="server"/>

我试过:

myImage.AlternateText = HttpContext.Current.Session["test"].ToString(); 

我收到了NullReferenceException

这显然是因为Session["test"]在页面加载后被填充(因此页面加载、图像渲染,然后调用处理程序)。

我该如何解决此问题?

将替换文本添加到程序创建的图像中

您可以在page_load中创建会话变量,并在那里为其分配randomString

然后,您将能够在处理程序中访问它,以便在创建图像时使用。

通过这种方式,您可以遵循不同事件的时间线:

  • 页面加载
  • 创建会话变量
  • 页面上的图像元素得到渲染
  • 处理程序被调用
  • 会话变量被引用以获取字符串
  • 生成图像
  • 利润

alt文本属于img标记,它引用处理程序创建的图像。只要把alt标签放在那里,你就可以出发了。