如何从代码后面设置图像?

时间:2013-09-17 11:04:49

标签: c# asp.net image

我有以下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 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

这样做的一种方法,特别是如果你想确保图像从不高速缓存(这对于动态加载的图像很常见)是将图像数据作为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());
        }
    }

答案 2 :(得分: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);

答案 3 :(得分:-1)

如何说@Sain Pradeep,您可以创建服务(如果使用mvc,则使用ashx或控制器方法)返回图像流,并将其与html标签<img>一起使用(asp:Image是<img>上的包装器)。 请参阅Display Image using ashx Handler

中的示例