将替换文本添加到程序创建的图像中
本文关键字:创建 图像 程序 替换 文本 添加 | 更新日期: 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标签放在那里,你就可以出发了。