タイトルには、1 つのジェネリック ハンドラー (.ashx) があり、1 つのハンドラーのみを使用して同時に 1 つの画像を表示する必要があると書かれています。ありがとう!プロジェクトで asp.net と c# を使用しています。表示する必要があるすべての画像は動的に生成されます。このハンドラーを使用して、asp イメージ コントロールで作成された動的なビットマップ イメージを表示する Web ユーザー コントロールが 1 つあります。しかし、これらの WebControl を 2 つ同時に使用すると、両方の 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);
}
}
これが、ハンドラーの呼び出し方法です。(ループで呼び出されるため、I はインデックスです) Usuario.Imagens[i] は URL を返します。たとえば、「i」が 0 の場合、Usuario.Imagens[0] は次を返します。 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();
}