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…...
A股量化策略实践(附策略)
最近美伊战争打的如火如荼,别的不知道,但是军费里肯定有我的一份力;于是开始研究量化策略,既然别人能做的,我叠加ai buff应该也能做;大概经过了十几版的调试,总算出来了一个稍微合适点ÿ…...
终极指南:DGIOT物联网平台如何构建千万级设备接入的技术方案
终极指南:DGIOT物联网平台如何构建千万级设备接入的技术方案 【免费下载链接】dgiot Open source platform for iot , 6 min Quick Deployment,10M devices connection,Carrier level Stability;物联网开源平台,6分钟快速部署,千万级承载,电信级稳定性. Low code fo…...
基于51单片机的智能饮水机控制系统(有完整资料)
资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T0012305C设计简介:本设计是基于51单片机的智能饮水机控制系统,主要实现以下功能:1.可通过显示屏显示当前水温和温度阈值…...
为什么你的C# 13主构造函数无法单步执行?微软Roslyn团队2024Q2调试协议变更详解(首批实测报告)
第一章:为什么你的C# 13主构造函数无法单步执行?C# 13 引入的主构造函数(Primary Constructor)语法简洁优雅,但调试时却常出现断点失效、F10/F11 无法单步进入等问题。根本原因在于:**主构造函数不生成独立…...
统信UOS 1070开启开发者模式全流程:从激活到获取root权限的保姆级教程
统信UOS 1070开发者模式深度解锁指南:从零获取root权限的完整路径 在国产操作系统生态快速发展的今天,统信UOS作为国内领先的Linux发行版,其安全机制设计尤为严格。对于开发者而言,获取系统级权限进行环境配置、软件编译和系统调优…...
SEO_本地商家如何进行有效的SEO推广
SEO推广的基础:为什么本地商家需要SEO 在如今的数字化时代,互联网已经成为人们获取信息、购买商品和服务的重要途径。对于本地商家来说,如何在这个竞争激烈的市场中脱颖而出,是一个不容忽视的问题。这时,SEO推广应运而…...
让 DDL 源码真正可读:SAP ADT 里 DDL Formatter 的配置逻辑、团队协作方式与项目实践
在很多 ABAP 项目里,开发人员会把注意力集中在语义正确、激活成功、性能可接受这些层面,却容易低估一件事:DDL 源码的可读性,直接影响建模质量、代码审查效率,以及团队协作时的认知成本。CDS 语句一旦开始出现较长的元素列表、复杂的 Boolean expression、多层 JOIN、多个…...
SetFit迁移学习最佳实践:如何在不同领域间高效迁移
SetFit迁移学习最佳实践:如何在不同领域间高效迁移 【免费下载链接】setfit Efficient few-shot learning with Sentence Transformers 项目地址: https://gitcode.com/gh_mirrors/se/setfit SetFit作为基于Sentence Transformers的高效小样本学习框架&#…...
DockerUI仪表板定制终极指南:7步打造个性化监控界面
DockerUI仪表板定制终极指南:7步打造个性化监控界面 【免费下载链接】ui-for-docker A web interface for Docker, formerly known as DockerUI. This repo is not maintained 项目地址: https://gitcode.com/gh_mirrors/ui/ui-for-docker DockerUI是一个基于…...
精通传感器融合:基于 KITTI 数据的 LiDAR 障碍物检测 — 第一部分
原文:towardsdatascience.com/sensor-fusion-kitti-lidar-based-obstacle-detection-part-1-9c5f4bc8d497?sourcecollection_archive---------4-----------------------#2024-12-25 如何使用 LiDAR 数据进行无监督学习的障碍物检测 https://medium.com/eroltak?s…...
