Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将动画.gif文件转换为.bmp条带_C#_Gif_Animated Gif_Bmp - Fatal编程技术网

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

C# 将动画.gif文件转换为.bmp条带,c#,gif,animated-gif,bmp,C#,Gif,Animated Gif,Bmp,我想知道是否有人可以指导我使用.gif图像并将其转换为.bmp条形图像文件。只需在位图中加载.gif并将其保存在.bmp中即可。如果你想导出.gif的帧,我不知道怎么做。你可以看看这个,它似乎就是你要找的东西。确定有效的方法是: 下载安装简易GIF动画工具 使用它打开巡更gif并将帧导出到单独的文件中 下载并安装任何可以创建图层的程序(例如Photoshop CS3 Little) 创建一个新的文件宽度作为您的图片;高度=图片的高度。X图片数量 复制每张照片。作为一个整体,将层插入到新文件中,并

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

只需在位图中加载.gif并将其保存在.bmp中即可。如果你想导出.gif的帧,我不知道怎么做。你可以看看这个,它似乎就是你要找的东西。

确定有效的方法是:

  • 下载安装简易GIF动画工具
  • 使用它打开巡更gif并将帧导出到单独的文件中
  • 下载并安装任何可以创建图层的程序(例如Photoshop CS3 Little)
  • 创建一个新的文件宽度作为您的图片;高度=图片的高度。X图片数量
  • 复制每张照片。作为一个整体,将层插入到新文件中,并逐个移动它们
  • 将其另存为.png文件
  • 下载安装iPAQ 31x图像资源管理器
  • 在其中打开你的.png文件
  • 将其另存为aRGB文件(普通BMP可能不起作用)
  • 完成
    也许这不是最简单的方法,但它提供了精确编辑的可能性,允许您在透明背景上制作图标条(但不限于图标)

    首先,您需要获得gif的大小。然后你需要知道有多少帧

    之后,您需要创建一个高度=原始高度,宽度=帧*Gif宽度的新图像

    然后必须将原始Gif帧粘贴到条带中,如下所示:帧N从像素N*宽度开始

    如果你在做一条水平的带子


    下面是控制台应用程序的完整代码:

    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);
        }
    
    使用系统图;
    使用系统、绘图、成像;
    foreach(args中的变量arg)
    {
    Image gif=Image.FromFile(arg);
    FrameDimension dim=新的FrameDimension(gif.FrameDimensionsList[0]);
    int frames=gif.GetFrameCount(dim);
    位图结果图像=新位图(gif.Width*帧,gif.Height);
    对于(int i=0;i

    生成的图像以名称
    res.png
    保存在已编译的console应用程序二进制文件目录中。您可以让应用程序将生成的图像保存在源文件所在的位置,询问是制作水平条还是垂直条等。

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

  • Open.gif-Photoshop将每个帧作为一个层打开
  • 将画布调整为(gif*层的高度)像素
  • 删除所有帧信息,保留图层
  • 选择最后一层,并将其移动到最底部
  • 选择所有图层并单击“分布垂直中心”。现在你有一个完美的安排带

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

    什么是.bmp条?你是说一个动画的.gif,你想把这些帧分割成不同的图像吗?然后将它们并排缝合在一起?是的,我基本上想将它们缝合在一起,但我不知道如何做到这一点。我之前看过这个示例,但它没有达到我的目的,尽管这个示例将.gif中的每个帧分割为单独的图像,但我希望将这些图像缝合到一个图像中。