将替代文本添加到以编程方式创建的图像

时间:2012-03-15 16:46:38

标签: c# asp.net

所以我有一个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"]在页面加载后填充(因此页面加载,图像被渲染,然后处理程序被调用)。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

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

这样,您可以按照不同事件的时间表进行操作:

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

答案 1 :(得分:0)

alt-text属于img-tag,它引用处理程序创建的图像。只需将alt标签放在那里就可以了。