Прежде всего, я должен сказать, что хранение миниатюр на сервере, вероятно, будет гораздо более эффективным, чем это решение. Некоторые из принципов в этом коде могут быть использованы для создания этих миниатюр при загрузке изображений. Это, вероятно, будет лучшим путем.
Как говорится, вот возможное решение. Это было взломано вместе очень быстро, но это работает. Я использую нечто подобное, чтобы обслуживать вложения из базы данных. Создайте новую страницу Ashx следующим образом:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Bitmap b = new Bitmap(@"c:\temp\pictures\" + context.Request.QueryString["filename"]);
Image i = b.GetThumbnailImage(48, 48, null, System.IntPtr.Zero);
using (MemoryStream ms = new MemoryStream())
{
i.Save(ms, ImageFormat.Jpeg);
context.Response.BinaryWrite(ms.ToArray());
}
context.Response.ContentType = "image/jpeg";
}
public bool IsReusable
{
get
{
return false;
}
}
}
Это найдет файл, имя которого передается из строки запроса, создаст миниатюру и использует поток памяти для отображения изображения. Вам, очевидно, придется скорректировать путь, обработку ошибок, убедиться, что типы MIME верны и т. Д.
Когда вы закончите, вы можете использовать этот URL (что-то вроде http://localhost/Handler.ashx?filename=myFirstImage) в ретрансляторе для создания ваших миниатюр.