如何将从方法接收的图像设置为ImageButton?

时间:2009-08-31 15:04:39

标签: asp.net

我有一个返回Image的方法。

如何将Image分配给我的ImageButton控件,以便设置该图像?

5 个答案:

答案 0 :(得分:2)

由于您正在处理HTML,因此您需要将Image保存到文件中,然后在ImageButton的ImageUrl属性中使用该文件。

答案 1 :(得分:1)

我相信ImageButton会获取Image的路径,而不是实际的Image对象,因为浏览器会将其呈现为标记。

你可以做的是将图像保存到磁盘,从方法返回图像的路径,然后

<asp:ImgageButton id="imgButton1" runat="server" imageUrl="<%= GetImageUrl()>" />

上述语法并不准确,可能是“&lt;%Response.Write(GetImageUrl())&gt;”但是你得到了图片

答案 2 :(得分:0)

如果此方法返回Image对象,则需要将图像保存到Web服务器上的物理位置(如Server.MapPath(“〜/ images /”))。然后,您需要将ImageButton控件的ImageUrl属性设置为此位置。

如果此方法返回图像文件的相对路径,只需将ImageButton的ImageUrl属性设置为方法返回的路径。

答案 3 :(得分:0)

总之,你不能。好吧不管怎么说。

您必须将图像写入文件并将图像按钮指向图像文件 或者你可以有一个网页,在响应中返回图像并将其用作ImageUrl

这样做的原因是你的ImageButton只是呈现为HTML,它不支持附加图像ATM。

答案 4 :(得分:0)

您可以尝试以下方法:

1)首先,从图像中获取二进制数据:

public byte[] ImageToByteArray(System.Drawing.Image image)
{
    MemoryStream ms = new MemoryStream();
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);

    return  ms.ToArray();
}

2)二次使用Inline Images with Data URLs想法:

  

内联图像使用数据URI方案   将图像直接嵌入到Web中   页面。根据RFC 2397的定义,数据   URI旨在嵌入小数据   项目作为“即时”数据,就像它们一样   在外部引用。运用   内联图像可以保存HTTP请求   外部引用的对象。

System.Drawing.Image image = GetImageFromSomewhere(...);

byte[] imageData = ImageToByteArray(image);
string imageBase64 = Convert.ToBase64String(imageData);
string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);

imgButton.Src = imageSrc;

但不幸的是,这对IE5-7不起作用(应该在IE8中运行)。