繁体   English   中英

如何使用Magick ++调整大小并保存gif文件而不会丢失动画

[英]How to resize and save gif file with Magick++ without animation loss

我有下一个调整图像大小的代码:

Image image;
image.read( imagePath.toStdString() );
Geometry newSize = Geometry(m_newSize.width(), m_newSize.height());
newSize.aspect(true);
image.resize(newSize);
image.write(newImagePath.toStdString());

此代码适用于非gif文件。 对于gif文件我丢失动画: 在调整gif文件大小之前

辞职后

如何在没有动画丢失的情况下调整gif文件大小?

我找到了解决方案! 谢谢MofX的正确方向!

   Geometry newSize = Geometry(m_newSize.width(), m_newSize.height());
   newSize.aspect(true); 
   list<Image> frames;
   readImages(&frames, imagePath.toStdString());
   for (auto& image : frames)
        image.resize(newSize);
   writeImages(frames.begin(), frames.end(), newImagePath.toStdString());

您必须使用readImages和animateImages将动画的所有帧读入图像列表并将其添加到动画中。

请访问http://www.imagemagick.org/Magick++/STL.html查看此示例:

#include <list> 
#include <Magick++.h> 
using namespace std; 
using namespace Magick;

int main(int /*argc*/,char **/*argv*/) 
{ 
    list<Image> imageList; 
    readImages( &imageList, "test_image_anim.gif" );

    Image appended; 
    appendImages( &appended, imageList.begin(), imageList.end() ); 
    appended.write( "appended_image.miff" ); 
    return 0; 
}

唯一的问题是,文档说,animatImages只能在X11下工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM