我目前正在创建一个程序,它接受一个输入GIF,在其上放置文本,并使用ImageMagick库将其输出为一个新的GIF。我的程序是完美的操作时,输出的GIF是保存在计算机上的某个地方,然后显示在一个PictureBox通过抓取它从该目录,但有没有一种方法,跳过写入到磁盘,而是直接放置在输出GIF后,它是编程创建的PictureBox?
我开始尝试让displayPicturebox
直接显示ImageMagick collection
变量(理论上是我已经组装好的GIF),但它不允许我隐式地从MagickImageCollection转换为System.Drawing.Image。
接下来,我尝试将所有处理过的帧放入GIF格式的内存流中,并将内存流转换为位图,以便displayPicturebox
接受,但这只显示第一帧的静态图像,其他什么都没有。
// Assume 'collection' is a collection of 10 frames to be turned into a GIF.
MagickImageCollection collection = new MagickImageCollection();
var memStream = new MemoryStream();
// Writes all frames onto memStream in GIF format...?
collection.Write(memStream, MagickFormat.Gif);
memStream.Position = 0;
var bitmap = Image.FromStream(memStream);
displayPicturebox.Image = new Bitmap(bitmap);
我读到过位图可以被动画化,所以我想知道是否有一种方法可以让它工作,或者如果GIF必须先保存在磁盘上。
1条答案
按热度按时间wr98u20j1#
看起来你只需要将位图分配给PictureBox,试试这个: