【问题标题】:How to set inverval in milisecond between gif frames with Imagemagick++如何使用 Imagemagick 设置 gif 帧之间的毫秒间隔
【发布时间】:2022-01-12 09:01:01
【问题描述】:

使用 ImageMagick 6.9.7.4 创建 Gif。

我将QImage 的向量转换为ImageMagick 图像类型并使用静态方法创建一个gif。但是生成的 gif 太快了,如何设置帧之间的间隔,或者让 gif 变慢一些?

std::vector<Magick::Image> listOfImages;
for (QImage &image:m_listOfImages)
{
    qDebug()<< image.size();
    {
        listOfImages.push_back(QImageToImage(image));
    }
}
qDebug()<< listOfImages.size();
QString gifName=QDateTime::currentDateTime().toString(QStringLiteral("hh-mm-ss"))+".gif";
Magick::writeImages(listOfImages.begin(), listOfImages.end(), gifName.toStdString());
qDebug()<< "Done";

QImageMagick::Image

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();
    }
    return newImage;
}

【问题讨论】:

    标签: c++ qt imagemagick


    【解决方案1】:
    Image img1( "100x100", "white" );
    img1.pixelColor( 49, 49, "red" );
    frames.push_back(img1);
    
    Image img2( "100x100", "red" );
    img2.pixelColor( 49, 49, "white" );
    frames.push_back(img2);
    
    img1.animationDelay(2000);
    img2.animationDelay(2000);*/
    
    Magick::writeImages(frames.begin(), frames.end(), "f:\\2.gif");
    

    当然,你应该在 Magick::Image 对象中设置一个 animationDelay 属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多