当前位置: 首页 > news >正文

C++ GDl+ 多张图片合并生成GIF动画格式图片

使用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博客

http://www.lryc.cn/news/418259.html

相关文章:

  • 【C++】模拟实现list
  • 怎么使用git merge合并两个分支?
  • ios 5.5寸、ipad13英寸如何截屏
  • spdlog日志库--输出格式(fmt 库集成)
  • Docker简介 MacM1安装Docker
  • 【Linux】yum软件包管理器(使用、生态、yum源切换)
  • 群晖NAS安装Video Station结合内网穿透实现远程访问本地存储的影音文件
  • Vue中@click.stop与@click.prevent
  • 沐风老师3DMax对象随机颜色插件使用方法
  • 安卓将子模块打aar包,并将其远程依赖打包进去
  • python 提取视频中的音频 采用ffmpeg-python 库
  • 区块链的搭建和运维4
  • 数据驱动决策:内容数据产品经理的成长与价值
  • pyinstaller 打包python 提示 object has no attribute
  • ubuntu20.04搭建RUST开发环境并与C语言交互
  • C语言 ——— 学习、使用memmove函数 并模拟实现
  • 职场中必须明白的三个道理,不明白无出头之日,你越早知道越好
  • 做webserver项目的一些问题和思路总结
  • 大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
  • 基于S7-200 SMART实现PID控制仿真实验
  • 社交及时通讯平台完整版源码,uniapp技术,可打包成app
  • TensorFlow和Pytorch是什么?干什么用的?
  • 采购人可否自行选择采购方式?|数智化招采系统支持多种采购方式
  • ubuntu dde 改为中文
  • Nginx配置小细节,location和proxy_pass 斜杠/ 问题
  • java 解析 PDF OFD 发票 部分文字缺失
  • C/C++数字与字符串互相转换
  • [Spring] Spring AOP
  • 鸿蒙 webview 实现顶部 Progress进度条
  • Pytest-BDD实现接口自动化测试,并附全部代码