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博客
相关文章:

C++ GDl+ 多张图片合并生成GIF动画格式图片
使用ImageMagick多张图合成GIF。 1、工具下载安装 下载地址:ImageMagick – Download,windows下载版本如下: 下载后,安装,安装时选择为C/C安装动态库和头文件。 2、代码实现 附加包含目录:ImageMagick-7.…...

【C++】模拟实现list
🦄个人主页:修修修也 🎏所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目及其功能 📌了解list官方标准 了解模拟实现list 📌了解更底层的list实现 二.list迭代器和vector迭代器的异同 📌迭…...
怎么使用git merge合并两个分支?
在Git中,git merge命令用于将两个或多个开发历史(通常指分支)合并到一起。以下是一个基本的步骤指南,说明如何使用git merge来合并两个分支。 ### 前提条件 - 确保你已经安装了Git,并且熟悉基本的Git命令,如…...
ios 5.5寸、ipad13英寸如何截屏
ios上架的时候,你可能会发现,上架需要ios 5.5寸,ipad需要13英寸的屏幕截屏。 但是尴尬了,我们手头上的手机,可能是最新的iphone 15,并没有远古时代iphone 8 plus的5.5寸,那么我们该如何截屏呢&…...
spdlog日志库--输出格式(fmt 库集成)
系列目录 spdlog日志库–基础介绍 spdlog日志库–源码解析 文章目录 1. 格式输出fmt格式输出2. format_spec 格式空间正数和负数的格式#号控制输出格式3. %s占位符 切换 {}占位符 (fmtlib(fmt::format)){}占位符 -> %s等占位符%s占位符 -> {}占位符4. 不使用占位符({}、%…...

Docker简介 MacM1安装Docker
文章目录 1 Docker简介2 Docker VS 虚拟机1 Docker优势2 Docker用途 3 MacM1 下载安装Docker1 配置环境变量 4 配置Docker2 设置Docker资源3 设置Docker镜像 参考 1 Docker简介 Docker主要解决了软件开发和运行配置的问题,但是由于其功能的强大,也被应用…...

【Linux】yum软件包管理器(使用、生态、yum源切换)
目录 1.yum-软件包管理器😸1.1yum使用方法1.2什么是yum?😸1.3yum的周边生态1.4yum源切换1.4.1 查看系统本身yum源1.4.2 软件源1.4.3yum源配置 1.yum-软件包管理器 以下操作需要联网的情况下进行 😸1.1yum使用方法 安装软件时由于需…...

群晖NAS安装Video Station结合内网穿透实现远程访问本地存储的影音文件
文章目录 前言1.使用环境要求:2.下载群晖video station:3.公网访问本地群晖video station:4.公网条件下访问本地群晖video station5.公网条件下使用移动端(安卓,ios等系统)访问本地群晖video station 前言 …...
Vue中@click.stop与@click.prevent
Vue中click.stop与click.prevent 一、click.stop 问题:父元素中添加了一个click事件,其下面的子元素中也添加了click事件,此时,我想点击子元素获取子元素的点击事件,但却触发的是父元素的事件: <view …...

沐风老师3DMax对象随机颜色插件使用方法
3DMax对象随机颜色插件使用教程 3DMax对象颜色插件,是一个功能强大的脚本,它通过提供高级工具来操纵场景中的对象颜色、材质和实例,从而增强了3D设计师和艺术家的工作流程。这个多功能脚本提供了一系列功能,旨在简化对象、组和实例的着色过程。 3DMAX对象颜色插件主要具有…...

安卓将子模块打aar包,并将其远程依赖打包进去
生成 AAR 包 在Android Studio Terminal 窗口输入以下命令: ./gradlew :monitor:assembleRelease把 monitor 换成你子模块的名称,不出意外的话 就会在下面目录生成相应aar文件 注意:如果你的Java运行环境是Java 8 则在老一点的AS上 可以运…...
python 提取视频中的音频 采用ffmpeg-python 库
要使用 ffmpeg-python 库从视频文件中提取音频,首先需要确保你的系统中已经安装了 FFmpeg 和 ffmpeg-python 库。以下是详细的步骤: 步骤 1: 安装 FFmpeg 确保你的系统中已经安装了 FFmpeg。如果你使用的是 CentOS,可以参照前面的回答来安装 …...

区块链的搭建和运维4
区块链的搭建和运维4 (1) 搭建基于MySQL分布式存储的区块链 1.构建单群组网络节点 使用开发部署工具构建单群组网络节点,命令如下: bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,85452. 启动 MySQL 并设置账户密码 输入如下命令,…...

数据驱动决策:内容数据产品经理的成长与价值
数据驱动决策:内容数据产品经理的成长与价值 内容数据产品经理以数据为媒介,在用户与决策之间搭建桥梁,通过理解分析模型和用户决策路径,设计产品以促成更多决策产出,创造用户价值。例如,在衡量数据产品经理…...
pyinstaller 打包python 提示 object has no attribute
参考: 错误:gi.repository.BlockDev’ object has no attribute plugin_specs_from_names 查看包路径 rpm -ql python3-blockdev/usr/lib64/python3.7/site-packages/gi/overrides/BlockDev.py /usr/lib64/python3.7/site-packages/gi/overrides/__pyca…...

ubuntu20.04搭建RUST开发环境并与C语言交互
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ubuntu20.04搭建RUST开发环境并与C语言交互 前言开战一、确认环境版本二、环境搭建三、hello world!四、跟c语言进行交互1.rust调用C静态库2.C调用rust库 总结参考…...

C语言 ——— 学习、使用memmove函数 并模拟实现
目录 memmvoe函数的功能 学习memmove函数编辑 模拟实现memmove函数 memmvoe函数的功能 memmvoe函数的功能类似于memcpy函数,都是内存拷贝,唯一的区别是memcpy函数不能成功拷贝原数据,而memmvoe函数可以 举例来说: [1, 2, 3…...

职场中必须明白的三个道理,不明白无出头之日,你越早知道越好
职场中有很多优秀的人才,他们工作能力出众,为人处事也非常的善良,但是有时候,这样的优点反而成了他们在职场中被欺负的原因,因为他们太善良,很容易被别人利用,为了自己的利益,有些人…...
做webserver项目的一些问题和思路总结
1.webserver是做什么的?这个项目最后想实现什么? 网络服务器,是一个处理HTTP请求并返回HTTP响应的程序。(socket实现的是网络编程,不一定是HTTP,还有其他协议,具体协议由端口来确定)…...

大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...
㊗️高考加油
以下是极为详细的高考注意事项清单,涵盖考前、考中、考后全流程,建议逐条核对: 一、考前准备 1. 证件与物品 必带清单: 准考证:打印2份(1份备用),塑封或夹在透明文件袋中防皱湿。身…...
用Ai学习wxWidgets笔记——在 VS Code 中使用 CMake 搭建 wxWidgets 开发工程
声明:本文整理筛选Ai工具生成的内容辅助写作,仅供参考 >> 在 VS Code 中使用 CMake 搭建 wxWidgets 开发工程 下面是一步步指导如何在 VS Code 中配置 wxWidgets 开发环境,包括跨平台设置(Windows 和 Linux)。…...
C#面试问题61-80
66. What is reflection? 反射是一种机制,它使我们能够编写可以检查应用程序中所 用类型的代码。例如,调用名称与给定字符串相等的方法,或者列出属于给定 对象的所有字段及其值。 在 Convert 方法中,我们根本不知道处理的是什么…...

网络寻路--图论
所以我们固定题中M条边(因为这M条一定联通) P8605 [蓝桥杯 2013 国 AC] 网络寻路 - 洛谷 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<int,int> pii; int n,m; int d[N],u[N],v[N]…...
使用Python和Flask构建简单的机器学习API
在机器学习项目中,将模型部署为一个Web API是一种常见的需求。这样可以方便地将模型集成到其他应用程序中,例如移动应用、Web应用或其他后端服务。Flask是一个轻量级的Python Web框架,非常适合用于构建简单的API。本文将通过一个具体的例子&a…...

Linux基础命令which 和 find 简明指南
🎯 Linux which 和 find 命令简明指南:从入门到实用 📅 更新时间:2025年6月7日 🏷️ 标签:Linux | which | find | 命令行 | 文件查找 文章目录 前言🌟 一、Linux 命令的本质与 which、find 的作…...
uniapp map组件的基础与实践
UniApp 中的 map 组件用于在应用中展示地图,并且支持在地图上添加标记、绘制线条和多边形等功能。以下是一些基本用法: 1. 基本结构 首先,确保你在页面的 .vue 文件中引入了 map 组件。以下是创建一个简单地图的基本代码结构: <template><view class="con…...
极空间z4pro配置gitea mysql,内网穿透
极空间z4pro配置gitea mysql等记录,内网穿透 1、mysql、gitea镜像下载,极空间不成功,先用自己电脑科学后下载镜像,拉取代码: docker pull --platform linux/amd64 gitea/gitea:1.23 docker pull --platform linux/amd64 mysql:5.…...

小白如何在cursor中使用mcp服务——以使用notion的api为例
1. 首先安装node.js,在这一步的时候不要勾选不要勾选 2. 安装完之后,前往notion页面 我的创作者个人资料 | Notion 前往集成页面,添加新集成,自己输入名字,选择内部 新建完之后,进入选择只读 复制密匙 然后前往cursor页面 新建…...
【Qt】:设置新建类模板
完整的头文件模板 #ifndef %FILENAME%_H #define %FILENAME%_H/*** brief The %CLASSNAME% class* author %USER%* date %DATE%*/ class %CLASSNAME% { public:%CLASSNAME%();~%CLASSNAME%();// 禁止拷贝构造和赋值%CLASSNAME%(const %CLASSNAME%&) delete;%CLASSNAME%&a…...