将.gif转换为.ani并保留所有帧

Converting a .gif to a .ani and Keeping All the Frames

提问人:Little Boy Blue 提问时间:8/6/2023 最后编辑:DarkBeeLittle Boy Blue 更新时间:8/9/2023 访问量:331

问:

在 C# 中转换为 ani 时,如何将.gif转换为.ani并维护 gif 中的所有帧?

C# 图像 文件

评论

1赞 Enigmativity 8/8/2023
尝试将问题的文本复制并粘贴到 ChatGPT 中。
0赞 Little Boy Blue 8/9/2023
@Enigmativity哈哈,我已经做过很多次了,但它没有给我一个有效的答案。

答:

2赞 Jonathan Feenstra 8/9/2023 #1

我找不到任何用于编写 ANI 文件的 .NET 库。但是,如果可以选择运行命令来调用外部可执行文件,则 ani-gif 是用 Rust 编写的 CLI,用于将 GIF 转换为 ANI。在撰写本文时,没有可用的预构建二进制文件,因此您必须使用 Cargo 自行构建它:

git clone https://github.com/mzntori/ani-gif.git
cd ./ani-gif
cargo build --release

ani-gif.exe然后可以在 中找到。可以从 C# 调用此可执行文件,如下所示:./ani-gif/target/release

using System.Diagnostics;

const string cliPath = @"path\to\ani-gif.exe";

void ConvertGifToAni(string gifPath, string aniPath, uint frameRate, string hotSpot="0:0")
{
    var startInfo = new ProcessStartInfo
    {
        FileName = cliPath,
        ArgumentList =
        {
            "convert",
            "-g",
            gifPath,
            "-a",
            aniPath,
            "-f",
            frameRate.ToString(),
            "--hotspot",
            hotSpot,
        },
        CreateNoWindow = true,
    };
    var proc = Process.Start(startInfo);
    proc?.WaitForExit();
}

ConvertGifToAni(
    gifPath: @"path\to\cursor.gif",
    aniPath: @"path\to\cursor.ani",
    frameRate: 5);

这应该保留所有原始帧。