You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ImageMagick++设置GIF动图各帧之间的毫秒间隔

ImageMagick C++ 生成GIF调整播放速度解决方案

要调整GIF播放速度,只需要给每一个Magick::Image帧对象设置animationDelay属性即可,该属性的单位为1/100秒,数值越大帧间隔越长、GIF播放速度越慢。

你之前生成的GIF播放过快,是因为没有主动设置animationDelay,ImageMagick默认使用极小的间隔值,因此会出现快进的效果。

代码修改方案

你可以直接在生成帧列表的循环中统一设置间隔,调整后的代码如下:

std::vector<Magick::Image> listOfImages;
for (QImage &image:m_listOfImages)
{
    qDebug()<< image.size();
    Magick::Image magickImg = QImageToImage(image);
    // 示例设置为每帧间隔100ms,可根据需求调整数值:如要500ms间隔填50,1秒间隔填100
    magickImg.animationDelay(10);
    listOfImages.push_back(magickImg);
}
// 可选配置:设置GIF无限循环播放,0代表无限循环,填正整数则对应循环次数
if (!listOfImages.empty()) {
    listOfImages[0].animationIterations(0);
}
qDebug()<< listOfImages.size();
QString gifName=QDateTime::currentDateTime().toString(QStringLiteral("hh-mm-ss"))+".gif";
Magick::writeImages(listOfImages.begin(), listOfImages.end(), gifName.toStdString());
qDebug()<< "Done";

如果希望在转换图像时直接配置间隔,也可以修改QImageToImage函数,在返回图像前添加配置即可:

Magick::Image DspPresenter::QImageToImage(QImage &qimage)
{
    qDebug() << "toImage:" << qimage.width() << qimage.height();

    const Magick::Geometry geometry(qimage.width(), qimage.height());
    const Magick::ColorRGB color(0.5, 0.2, 0.3);
    Magick::Image newImage(geometry, color);
    double scale = 1 / 256.0;
    newImage.modifyImage();
    Magick::PixelPacket  *pixels;
    Magick::ColorRGB mgc;
    for (int y = 0; y < qimage.height(); ++y)
    {
        pixels = newImage.setPixels(0, y, newImage.columns(), 1);
        for (int x = 0; x < qimage.width(); ++x)
        {
            QColor pix = qimage.pixel(x, y);
            mgc.red(scale *pix.red());
            mgc.green(scale *pix.green());
            mgc.blue(scale *pix.blue());
            *pixels++ = mgc;
        }
        newImage.syncPixels();
    }
    // 在这里设置每帧的间隔时长
    newImage.animationDelay(10);
    return newImage;
}

内容的提问来源于stack exchange,提问作者user10609288

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:54:00