Создать динамическое изображение (.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();
Надеюсь, что это может быть полезно для кого-то.