Tag: gif

C#Drawing.Imaging丢弃GIF帧,如果它们相同

我需要加载GIF动画并将它们逐帧转换为位图。 为此,我使用Drawing.Imaging库逐帧提取我的GIF文件,然后将每个帧转换为位图。 除了没有像素差异的连续帧相同的时候,一切都很好。 图书馆似乎正在放弃这样的框架。 我通过简单的测试得出了这个结论。 我已经创建了一个圆圈的动画,这个圆圈在最后一个圆圈消失的时刻与尚未显示的新圆圈之间暂停,正在增长和缩小。 当我播放由我提取的位图组成的动画时,暂停不存在。 如果我比较相同帧长但不同数量的相同帧的GIF,则返回的totalframescount值是不同的。 我还观察到webbrowsers正确显示相同的连续帧。 public void DrawGif(Image img) { FrameDimension dimension = new FrameDimension(img.FrameDimensionsList[0]); int frameCountTotal = img.GetFrameCount(dimension); for (int framecount = 0; framecount < frameCountTotal; framecount++) { img.SelectActiveFrame(dimension, framecount); Bitmap bmp = new Bitmap(img); //cast Image type to Bitmap for (int i = 0; i < 16; i++) { […]

使用c#压缩GIF动画图像大小

我想用c#从几个图像创建动画gif图像,所以我使用下面的github解决方案来做到这一点。 https://github.com/DataDink/Bumpkit 我正在使用下面的代码来做到这一点 using (var gif = File.OpenWrite(@”C:\IMG_TEST.gif”)) using (var encoder = new GifEncoder(gif)) for (int i = 0, count = imageFilePaths.Length; i < count; i++) { Image image = Image.FromFile(imageFilePaths[i]); encoder.AddFrame(image,0,0); } 它就像一个魅力,但它正在创建大小为45 MB的gif。 如果我检查我的实际图像大小,那么它只有11MB,总共47个图像。 但不知何故,gif正在产生大尺寸。 现在我想压缩使用c#创建的gif图像的大小。 那么有什么方法可以压缩gif图像的大小?

高级gif库

我正在寻找一个.NET C#gif动画库(不一定是免费的),这将允许我获取一个gif文件并附加一帧jpeg甚至另一个gif文件。 我还需要能够在帧之间添加更改延迟。 这里类似问题的答案通常是指一个基本库,它只允许您在静态图像之间添加固定延迟。

将动画.gif文件转换为.bmp条带

我想知道是否有人可以指导我或指导我使用.gif图像并将其转换为.bmp条形图像文件。

需要在C#中创建动画GIF

我尝试了各种各样的解决方案,例如 http://bloggingabout.net/blogs/rick/archive/2005/05/10/3830.aspx 和 http://www.codeproject.com/KB/GDI-plus/NGif.aspx 但它们似乎都没有正常工作。 NGif没问题,但结果gif已损坏(第一帧的白色像素)。 而且我无法让Rick van den Bosch的代码完全奏效。 我只想要一些我可以包含的代码,并且有一个函数CreateAnimatedGif,它接受一个图像列表,延迟和是否循环,并返回一个Image(或一个带有它所写入文件名的字符串)。 但无论如何,我都无法得到任何工作。

如何在C#中显示GIF图像的特定帧?

我想显示一个gif图像的框架。 我搜索并发现以下代码应该可以工作,但它不起作用。 它正确检测帧数,但它显示的是整个gif帧而不是指定的帧。 谢谢大家。 Image[] frames = new Image[36]; Image GG = Image.FromFile(@”C:\Users\Administrator\TEST C#\TEST2frame2\chef.gif”); FrameDimension dimension = new FrameDimension(GG.FrameDimensionsList[0]); // Number of frames int frameCount = GG.GetFrameCount(dimension); label1.Text = frameCount.ToString(); // Return an Image at a certain index GG.SelectActiveFrame(dimension, 1); frames[1] = ((Image)GG.Clone()); pictureBox1.Image = frames[1];

C#捕获直接3D屏幕

我一直在搞屏幕捕捉一段时间,我设法捕捉整个屏幕,屏幕上的某些区域等… 但是当我进入游戏并尝试捕捉屏幕时,它完全忽略了游戏,而是捕获桌面(或游戏窗口后面的任何内容)。 另一个有趣的事实是,PrtScn按钮也会发生同样的事情。 关于如何捕捉游戏画面的任何想法?

如何生成GIF 256色调色板

我需要在C#中创建一个16 X 16可点击矩形的矩阵,然后用256色调色板(GIF)中的颜色填充每个矩形。 我只需要帮助就可以创建一个简单的类来生成256种颜色。

使用C#访问GIF帧

我是C#的初学者。 我想知道是否有办法用C#访问GIF动画中的不同帧。 我正在使用Visual Studio 2008。

C#gif图像到MemoryStream并返回(丢失动画)

我有一个小问题,我找不到任何解决方案。 我想将GIF转换为byte []然后再转换为GIF。 我工作正常,但我失去了动画。 当我开始时它是一个完美的动画GIF(我在PictureBox元素中显示它)。 但转换后我陷入第一帧。 HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(“creativetechs.com/i/tip_images/ExampleAnimation.gif”); HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse(); Stream stream = httpWebReponse.GetResponseStream(); Image img = Image.FromStream(stream); MemoryStream ms = new MemoryStream(); img.Save(ms,img.RawFormat); byte [] bytes = ms.ToArray(); Image img2 = Image.FromStream(new MemoryStream(bytes)); int frames1 = img.GetFrameCount(System.Drawing.Imaging.FrameDimension.Time); int frames2 = img2.GetFrameCount(System.Drawing.Imaging.FrameDimension.Time); 我也尝试使用不是RawFormat而是使用System.Drawing.Imaging.ImageFormat.Gif 。 没改变一件事。 frames1是正确的帧数。 frames2是1。 我的GUI中有2个PictureBox元素。 一个显示img ,另一个显示img2 。 […]