Создать динамическое изображение (.gif) через универсальный обработчик

У меня уже есть алгоритм, созданный с помощью библиотеки Magick.Net, чтобы показать небольшой счетчик времени, однако, когда я запрашиваю ресурс gif через универсальный обработчик, возвращает статическое изображение, но когда я проверяю тестовый файл с именем: "test.gif", динамическое изображение работает отлично. Чтобы объяснить мне лучше, это код:

MagickImageCollection image = null;
image = ImageRenderMethods.CreateGIF((DateTime)eventDate);

var path = RequestContext.HttpContext.Server.MapPath("/Content/Images");
path += "\\test.gif";
image.Write(path);

byte[] buffer = image.ToByteArray();
context.Response.ContentType = "image/gif";
context.Response.BinaryWrite(buffer);
context.Response.Flush();

Поэтому я хочу знать, почему ответ универсального обработчика не является динамическим.gif, а является статическим результатом.

1 ответ

Решение

Любому удивлению, как предоставить.gif через универсальный обработчик с помощью Magick.Net, вам нужно передать объект MagickImageCollection в MemoryStream и, наконец, это в IE Byte Array:

public static MemoryStream GetMemoryStreamResult(MagickImageCollection imageGif)
{
    MemoryStream ms = new MemoryStream();
    imageGif.Write(ms, MagickFormat.Gif);
    ms.Seek(0, SeekOrigin.Begin);
    return ms;
}

и вызов что-то вроде:

 var imageGif = ImageRenderMethods.GetMemoryStreamResult(image);
 byte[] buffer = imageGif.ToArray();

Надеюсь, что это может быть полезно для кого-то.

Другие вопросы по тегам