是否可以同时从处理程序中显示多个图像?

时间:2013-02-06 01:20:00

标签: c# asp.net image handler

标题说永恒,我有一个通用处理程序(.ashx),我需要只使用一个处理程序同时显示一个图像。感谢你! 我在我的项目中使用asp.net和c#。 我需要显示的所有图像都是动态生成的。 我有一个Web用户控件,它使用此处理程序显示在asp图像控件上创建的动态BitMap图像。 但是当我同时使用其中两个WebControl时,我遇到了一个问题,因为WebControl都显示相同的图像。

ImageHandler.ashx(这些效果并不重要,它只是在用户选择下拉列表中的选项时更改图像,这不是真正的问题。)

public void ProcessRequest(HttpContext context)
{
    string Effect = context.Request.QueryString["Effect"];
    if (Effect == "Normal")
    {
        Bitmap bmp = PanelStepTwo.image;
        context.Response.ContentType = "image/png";
        bmp.Save(context.Response.OutputStream, ImageFormat.Png);
    }
    else if (Effect == "PB")
    {
        Bitmap bmp = PanelStepTwo.imagePB;
        context.Response.ContentType = "image/png";
        bmp.Save(context.Response.OutputStream, ImageFormat.Png);
    }
    else if (Effect == "Sepia")
    {
        Bitmap bmp = PanelStepTwo.imageSepia;
        context.Response.ContentType = "image/png";
        bmp.Save(context.Response.OutputStream, ImageFormat.Png);
    }
}

这就是调用处理程序的方式。 (我是索引,因为它在循环中被调用) Usuario.Imagens [i]返回一个URL,例如,如果'i'为0,Usuario.Imagens [0]返回:@“http://edgeconstrutora.com.br/FotoFacil/Images/he0cy.png

imgID = i;
var request = WebRequest.Create(Usuario.Imagens[i]);
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
    image = new Bitmap(stream);
    var ratioX = (double)120 / image.Width;
    var ratioY = (double)120 / image.Height;
    var ratio = Math.Min(ratioX, ratioY);
    var newWidth = (int)(image.Width * ratio);
    var newHeight = (int)(image.Height * ratio);
    proporcao = image.Width / newWidth;
    img.Width = newWidth;
    img.Height = newHeight;
    Effect = "Normal";
    img.ImageUrl = "ImageHandler.ashx?imgID=" + imgID + "&Effect=" + Effect.ToString();
}

1 个答案:

答案 0 :(得分:0)

将IsReusable属性设置为true以处理多个图像。上次我看的时候没有这个MSDN文档。但这就是我用来显示产品图片的列表。