【问题标题】:Converting animated .gif file into a .bmp strip将动画 .gif 文件转换为 .bmp 条带
【发布时间】:2012-04-18 07:23:49
【问题描述】:

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

【问题讨论】:

  • 什么是 .bmp 条带?您的意思是动画 .gif 并且您想将帧分割成单独的图像吗?然后将它们并排缝合在一起?
  • 是的,我本质上想将它们缝合在一起,但我对如何做到这一点一无所知。

标签: c# gif animated-gif bmp


【解决方案1】:

首先,您需要获取 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 的已编译控制台应用二进制文件目录中。您可以让应用将生成的图像保存在源文件所在的位置,询问是否制作水平或垂直条带等。

【讨论】:

    【解决方案2】:

    使用 Photoshop 可以轻松制作图像条(您可以获得免费试用版或 Elements)

    1. 打开 .gif - Photoshop 会将每一帧作为一个图层打开
    2. 将画布大小调整为(gif * 层的高度)像素
    3. 删除所有帧信息,保留图层
    4. 选择最后一层,并将其移至最底部
    5. 选择所有图层并单击“分布垂直中心”。现在你有一个完美排列的条带。

    如果您使用的是 Photoshop,则可以只导出为 BMP。就是这样。

    【讨论】:

      【解决方案3】:

      确定有效的方法是:

      1. 下载安装 Easy GIF Animator
      2. 用它打开游览 gif 并将帧导出到单独的文件中
      3. 下载并安装任何可以创建图层的程序(例如 Photoshop CS3 Little)
      4. 创建一个新的文件宽度作为你的图片;高度 = 您照片的高度。 X 张图片
      5. 复制每张照片。作为图层添加到您的新文件中,然后一个接一个地移动它们。
      6. 将其保存为 .png 文件
      7. 下载安装 iPAQ 31x Image Explorer
      8. 在其中打开您的 .png
      9. 将其保存为 RGB 文件(普通 BMP 可能不起作用)
      10. 完成!!

      也许这不是最简单的方法,但它提供了精确编辑的可能性,并允许您制作透明背景上的图标条(但不限于图标)

      【讨论】:

        【解决方案4】:

        只需在 Bitmap 中加载 .gif 并将其保存为 .bmp。如果你想导出 .gif 的帧,我不知道该怎么做。你可以看看这个www.eggheadcafe.com/articles/stripimagefromanimatedgif.asp,它似乎就是你要找的东西。

        【讨论】:

        • 我之前看过这个例子,它没有做我想要的,虽然这个例子确实将每个帧从 .gif 分割成单独的图像,但我希望将这些图像拼接成一个图像.
        猜你喜欢
        • 1970-01-01
        • 2016-10-13
        • 2021-06-19
        • 2019-09-26
        • 1970-01-01
        • 2017-07-19
        • 1970-01-01
        • 2013-09-05
        • 2020-06-27
        相关资源
        最近更新 更多