【发布时间】:2012-04-18 07:23:49
【问题描述】:
我想知道是否有人可以指导我使用 .gif 图像并将其转换为 .bmp 条形图像文件。
【问题讨论】:
-
什么是 .bmp 条带?您的意思是动画 .gif 并且您想将帧分割成单独的图像吗?然后将它们并排缝合在一起?
-
是的,我本质上想将它们缝合在一起,但我对如何做到这一点一无所知。
标签: c# gif animated-gif bmp
我想知道是否有人可以指导我使用 .gif 图像并将其转换为 .bmp 条形图像文件。
【问题讨论】:
标签: c# gif animated-gif bmp
首先,您需要获取 gif 的大小。然后你需要找出有多少帧。
之后,您需要创建一个高度 = 原始高度,宽度 = 帧数 * Gif 宽度的新图像。
然后您必须将原始 Gif 的帧粘贴到条带中,如下所示:帧 N 从像素 N*Width 开始。
也就是说,如果您要制作水平条。
这是控制台应用程序的完整代码:
using System.Drawing;
using System.Drawing.Imaging;
foreach (var arg in args)
{
Image gif = Image.FromFile(arg);
FrameDimension dim = new FrameDimension(gif.FrameDimensionsList[0]);
int frames = gif.GetFrameCount(dim);
Bitmap resultingImage = new Bitmap(gif.Width * frames, gif.Height);
for (int i = 0; i < frames; i++)
{
gif.SelectActiveFrame(dim, i);
Rectangle destRegion = new Rectangle(gif.Width * i, 0, gif.Width, gif.Height);
Rectangle srcRegion = new Rectangle(0, 0, gif.Width, gif.Height);
using (Graphics grD = Graphics.FromImage(resultingImage))
{
grD.DrawImage(gif, destRegion, srcRegion, GraphicsUnit.Pixel);
}
}
resultingImage.Save("res.png", ImageFormat.Png);
}
生成的图像保存在名为res.png 的已编译控制台应用二进制文件目录中。您可以让应用将生成的图像保存在源文件所在的位置,询问是否制作水平或垂直条带等。
【讨论】:
使用 Photoshop 可以轻松制作图像条(您可以获得免费试用版或 Elements)
如果您使用的是 Photoshop,则可以只导出为 BMP。就是这样。
【讨论】:
确定有效的方法是:
也许这不是最简单的方法,但它提供了精确编辑的可能性,并允许您制作透明背景上的图标条(但不限于图标)
【讨论】:
只需在 Bitmap 中加载 .gif 并将其保存为 .bmp。如果你想导出 .gif 的帧,我不知道该怎么做。你可以看看这个www.eggheadcafe.com/articles/stripimagefromanimatedgif.asp,它似乎就是你要找的东西。
【讨论】: