Вместо использования файла .aspx
используйте файл универсального обработчика (.ashx
). Это означает, что вам нужен только 1 файл (без файла разметки), поэтому он немного аккуратнее и немного быстрее. В конце концов, вы не генерируете веб-форму, поэтому файл .aspx
- это не то, что вам нужно.
Вы можете использовать System.Drawing.Graphics.DrawImage()
для создания миниатюры.
Что-то простое, как это будет работать:
Bitmap bmpOut = new Bitmap(width, height);
Bitmap B = new Bitmap(context.Server.MapPath(ImageURL));
Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = InterpolationMode.High;
g.DrawImage(B, 0, 0, width, height);
context.Response.ContentType = "image/PNG";
MemoryStream MemStream = new MemoryStream();
B.Save(MemStream, System.Drawing.Imaging.ImageFormat.Png);
B.Dispose();
MemStream.WriteTo(HttpContext.Current.Response.OutputStream);
Где width
& height
- значения integer
, а ImageURL
- строка локального URI
Я бы не стал изменять размер вашего изображения, используя атрибуты width / height в HTML / CSS. Это означает, что вы отправляете полноразмерное изображение клиенту, тратя впустую пропускную способность и время каждого! Более того, когда HTML изменяет его размер, он обычно делает извращенную работу.
В дополнение к этому, я использовал для создания таких миниатюр на лету, как это, но решил, что производительность снижается, поскольку вы изменяете размер изображения каждый раз, когда делается HTTP-запрос.
Поэтому, когда бы ни было загружено основное изображение, я сохранял миниатюру в физическом месте и вызывал ее в своем HTML.