1

我有以下 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

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

4

5 回答 5

2

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

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

您需要创建 GetImage.ashx 并适当地处理您的 id(或任何您使用的)。然后你可以做一个简单的写回页面。

于 2013-09-17T11:10:53.707 回答
1

根据 Guymid 的答案,您还可以像这样从后面的代码中分配 img.Src ...

pbScannedImage.Src = "data:image/png;base64," + ImageToBase64String(Image);
于 2018-02-26T19:46:39.920 回答
0

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

“背景图像:url(数据:图像/gif;base64,”+ ImageToBase64String(图像)+“)”

    public string ImageToBase64String(Image image)
    {
        using (MemoryStream stream = new MemoryStream())
        {
            image.Save(stream, ImageFormat.Png);
            return Convert.ToBase64String(stream.ToArray());
        }
    }
于 2013-09-17T12:50:28.280 回答
0
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);
于 2013-09-17T13:27:22.770 回答
-1

@Sain Pradeep 怎么说,你可以创建服务(ashx 或 contoller 方法,如果你使用 mvc)来返回图像流并将其与 html 标签一起使用<img>(asp:Image 是 wrapper over <img>)。查看使用 ashx Handler 显示图像的示例

于 2013-09-17T11:20:48.490 回答