C# 通过通用处理程序创建动态图像(.gif)

C# 通过通用处理程序创建动态图像(.gif),c#,imagemagick,generic-handler,magicknet,C#,Imagemagick,Generic Handler,Magicknet,我已经使用Magick.Net库创建了一个算法来显示一个小的时间计数器,但是当我通过通用处理程序请求gif资源时,返回一个静态图像,但是当我检查名为“test.gif”的测试文件时,动态图像工作得非常好。为了更好地解释我,代码如下: MagickImageCollection image = null; image = ImageRenderMethods.CreateGIF((DateTime)eventDate); var path = RequestContext.HttpContext

我已经使用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 dinamic,而是静态结果。

要想知道如何通过通用处理程序公开.gif,您需要将对象传递到一个字节数组,最后传递到字节数组,即:

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();
希望这对某人有用