如何从代码隐藏设置图像

本文关键字:设置 图像 隐藏 代码 | 更新日期: 2023-09-27 18:31:32

>我有以下aspx代码

<asp:Image ID="pbScannedImage" runat="server" />

我隐藏的 c# 代码是

System.Drawing.Image image;
image = System.Drawing.Image.FromStream(new MemoryStream(dDSImageViewerDTO.ROI));
pbScannedImage.Visible = true;
pbScannedImage.ImageUrl = "";
// This is available but I don't want to write file to the disk and 
// assign directly to the image box something like 
pbScannedImage.Image = image;
//i know this is not possible so any other work around would be great help

所以基本上我想将图像分配给图像控件,而不将其写入其他任何地方。是否有可能,如果没有,那么是否有任何可用的解决方法?

如何从代码隐藏设置图像

您可以将数据库映像逻辑分离到泛型处理程序 (ASHX) 中,然后将该处理程序用作映像的 src,例如

img.src=GetImage.ashx?id=1;

您需要创建GetImage.ashx并适当地处理您的ID(或您使用的任何内容)。然后,您可以对页面进行简单的写回。

根据guymid的答案,你也可以分配img。像这样从后面的代码中产生...

pbScannedImage.Src = "data:image/png;base64," + ImageToBase64String(Image);
pbScannedImage.Src = "ImageHandler.ashx";

处理程序代码必须如下所示:

名字

 System.Drawing.Image dbImage =
                 System.Drawing.Image.FromFile("file path");
            System.Drawing.Image thumbnailImage =
                 dbImage.GetThumbnailImage(80, 80, null, new System.IntPtr());
            thumbnailImage.Save(mstream, dbImage.RawFormat);
            Byte[] thumbnailByteArray = new Byte[mstream.Length];
            mstream.Position = 0;
            mstream.Read(thumbnailByteArray, 0, Convert.ToInt32(mstream.Length));
            context.Response.Clear();
            context.Response.ContentType = "image/jpeg";
            context.Response.BinaryWrite(thumbnailByteArray);

执行此操作的一种方法是,特别是如果要确保图像永远不会被缓存(这在动态加载的图像中很常见),方法是将图像数据作为CSS背景图像数据添加到元素(如div)中:

"background-image:url(data:image/gif;base64," + ImageToBase64String(Image) + ")"

    public string ImageToBase64String(Image image)
    {
        using (MemoryStream stream = new MemoryStream())
        {
            image.Save(stream, ImageFormat.Png);
            return Convert.ToBase64String(stream.ToArray());
        }
    }

Pradeep@Sain怎么说,你可以为返回图像流创建服务(如果使用mvc,则为ashx或contoller方法),并将其与html标签<img>一起使用(asp:Image 是<img>上的包装器)。使用 ashx 处理程序查看显示图像中的示例