首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Imagemagick++设置gif帧之间的毫秒反转

如何用Imagemagick++设置gif帧之间的毫秒反转
EN

Stack Overflow用户
提问于 2021-12-07 09:22:24
回答 1查看 41关注 0票数 0

使用ImageMagick 6.9.7.4创建Gif。

我将QImage的向量转换为ImageMagick图像类型,并使用静态方法创建一个gif。但是结果是gif这么快,怎么能在帧之间设置一个间隔,或者由gif使一些慢呢?

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 09:34:41

代码语言:javascript
运行
复制
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");

当然,您应该在animationDelay对象中设置Magick::Image属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70257579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档