使用ImageMagick多张图合成GIF。
1、工具下载安装
下载地址:ImageMagick – Download,windows下载版本如下:
下载后,安装,安装时选择为C/C++安装动态库和头文件。
2、代码实现
附加包含目录:ImageMagick-7.1.1-Q16-HDRI\include
附加库目录:ImageMagick-7.1.1-Q16-HDRI\lib
动态库:
CORE_RL_Magick++.lib
CORE_RL_MagickCore.lib
CORE_RL_MagickWand_.lib
示例代码:
#include <Magick++.h>
#include <list>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Magick::InitializeMagick("");
std::vector<Magick::Image>animation;
// 加载图像帧
Magick::Image framel;
framel.read("./7[00_00_01][20240717-144122].jpg");
framel.animationDelay(60);
animation.push_back(framel);
Magick::Image frame2;
frame2.read("./7[00_00_05][20240717-144133].jpg");
frame2.animationDelay(60);
animation.push_back(frame2);
Magick::Image frame3;
frame3.read("./7[00_00_08][20240717-144140].jpg");
frame3.animationDelay(60);
animation.push_back(frame3);
try
{
Magick::writeImages(animation.begin(), animation.end(), "230_144950_2024.gif");
}
catch (Magick::Exception &error)
{
cout << "Caught exception: " << error.what() << endl;
return 1;
}
}
使用opencv保存,调用接口:
std::vectorMagick::Image animation;
// Mat image;
Magick::Image mgkImg(image.cols, image.rows, "BGR", MagickCore::CharPixel, (char *)image.data);
td::cout << "Magick : 1" << std::endl;
mgkImg.animationDelay(60);
std::cout << "Magick : 2" << std::endl;
animation.push_back(mgkImg);
// ...
Magick::writeImages(animation.begin(), animation.end(), "gif_img-path");
animation.clear();
3、ubuntu22.04安装ImageMagick
step1、安装之前,先做检查:
sudo apt-get install build-essential checkinstall && apt-get build-dep imagemagick -y
step2、下载ImageMagick
sudo wget http://www.imagemagick.org/download/ImageMagick.tar.gz
step3、解压并安装
sudo tar xzvf ImageMagick.tar.gz
step4、进入ImageMagick目录,依次执行命令:
./configure sudo make sudo make install ldconfig /usr/local/lib
注:后续使用,遇到缺少decode delegate问题,需要重新安装,先安装相关delegate。报错提示:convert: no decode delegate for this image format 1.jpg。
解决步骤:
首先通过convert -list format指令,查看自己是否有jpeg这一格式,如果没有,那么进行下一步操作。
进入Index of /archive/delegates 网站,找到最新的jpegsrc文件,我下载的是jpegsrc.v9a。
以Ubuntu为例,安装:
./configure –prefix=/usr
make
make install
然后需要重装Imagemagick,而且不能简单的make install ,必须按如下指令进行。
./configure –enable-shared –enable-lzw –without-perl –with-modules
make
make install
如果一直报找不到png delegate,可尝试下:
sudo apt install pkg-config made PNG
参考:
1、ubuntu22.04安装ImageMagick
ubuntu22.04安装ImageMagick_ubuntu安装imagemagick-CSDN博客