(原)关于使用imagemagick将gif叠加到图片或者画布上的方法,以及疑难杂症
今天因为项目过程中,有一个小需求,需要将一个指定的gif按照指定大小,叠加到画布的指定位置上,本来对于熟悉这块的人,简直就是小菜一碟哈,但本人因为对imagemagick的不熟悉,导致在这个需求上摸索了一天才解决问题,所以写下这篇博文,防止后期忘记了这段过程。
第一步需求是,将GIF调整到指定的大小尺寸:
使用命令:convert 5832.gif -coalesce -resize 92x92! 92.gif
这条命令是强制将输入的gif调整为指定的大小,其中和图片不同的调整,是这个中间多了一个 coalesce 选项,这个是专门用于GIF动画序列的。
合成出来的效果为:
第二步需求是将这个调整好的GIF序列,叠加到一个透明的大小画布上去,按指定位置坐标叠加
初次使用命令:
convert -size 191x191 xc:none null: 92.gif -geometry +99+2 -layers Composite -loop 0 33.gif
合成出来的效果图像有重影,效果:
然后找了半天的问题,调整命令:
convert ( -size 483x483 xc:none ) ( 5832.gif -coalesce -resize 643x643! -repage +68+64 ) 773_0.gif
解决GIF重影效果,合成后的效果如图:
这个时候以为完全解决问题了,结果测试同学,测试了几个例子,当前期的GIF图像比画布大的时候,超过画布范围的时候,就出现了问题,如果需要将这个合成后的GIF丢到ffmpeg中进行解码处理,或者将这个合成后的gif转成mp4,就出现了下面的这个问题:

通过针对这个情况,和ffmpeg中的源码,我怀疑是gif中的头文件对图像的宽高和实际图像的宽高不一致导致的,于是继续模式和调整命令,调整为:
convert -size 960x540 xc:none null: "(" 5832.gif -coalesce -resize 220x220! +repage ")" -geometry 960x540+370+160 -layers Composite -set dispose background +repage -loop 0 ./7.gif
修复上述的重影和ffmpeg解码格式的问题。
转载注明出处:https://www.cnblogs.com/lihaiping/p/11425849.html
(原)关于使用imagemagick将gif叠加到图片或者画布上的方法,以及疑难杂症的更多相关文章
- 使用imageMagick 制作圆角矩形和图片加水印
制作圆角矩形好图片水印都是图片合成的操作 composite -gravity southeast mask175.png src.jpg dest.jpg -gravity southeast ...
- ImageMagick之PDF转换成图片(image)
安装完ImageMagick之后,直接执行“magick convert f:\parseWord\tmp\testpdf.pdf f:\parseWord\tmp\testpdf.jpg”,会报错: ...
- Linux下php+imagemagick支持webp格式的图片
摘要 ImageMagick是一款功能强大的图片处理工具包,很多互联网应用中都会涉及到图片处理工作,比如切割.缩放.水印.格式转换等.ImageMagick就是一个理想的工具包. 安装基础依赖 先检查 ...
- C#实现图片叠加,图片上嵌入文字,文字生成图片的方法
/// <summary> /// 图片叠加 /// </summary> /// <param name="sender"& ...
- Linux使用imagemagick的convert命令压缩图片、节省服务器空间
一.安装: sudo apt-get install imagemagick 二.说明 imagemagick的命令convert可以完成此任务,其参数-resize用来改变图片尺寸,可以直接指定像素 ...
- Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
这里也会遇到一次性关闭所有modal引起阴影遮罩的问题,也就是所有modal都关闭了,但是主页面仍然被阴影遮罩. 这个问题从哪来的,是因为modal叠加,我们点击窗口之外的空白部分,一次性关闭所有mo ...
- Linux使用imagemagick的convert命令压缩图片,节省服务器空间
1,安装imagemagick yum install ImageMagick 2,获取图片 find ./ -regex '.*\(jpg\|JPG\|png\|jpeg\)' -size +500 ...
- 使用Imagemagick批量加水印缩小图片的脚本
安装Imagemagick首先要安装Imagemagick 本文HTML永久地址 doc CentOS上安装 yum install ImageMagick -yDebian上安装 apt-get i ...
- 关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法(转)
我们在IDEA中创建子目录时,子目录总是在父目录后面叠加而不是树形,如下 我们可以打开项目窗口的右上角的设置标志, 将红圈选项的√先去掉,创建好子目录后再将它选中就可以
随机推荐
- php7中的dirname,intdiv,define
<?php //dirname可指定目录级数 //intdiv整数整除 //define可以定义数组 echo dirname('/var/www/html/app/etc/config'); ...
- 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告
作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:Beta阶段团队项目互评 团队名称: 那周余嘉熊掌将得队 作业目标:项目互测互评 队员学号 队员姓名 博客地址 备注 221600131 ...
- 音视频RTP数据包封装
对于语音通信而言,语音码率较低,添加适当冗余是对抗网络丢包的常见方式.冗余方式有多种,包括RED,FEC等都是冗余的一种,如果冗余份数较多,可以采取交织的方式实现.RFC 3350是RTP的基础标准协 ...
- service里无法注入mapper,mapper空指针
被困扰了一天,终于解决了,记录一下 下面是mapper的代码 @Mapper public interface ProductDao { @Select("select * from pro ...
- jQuery--data()方法
data() 函数用于在当前jQuery对象所匹配的所有元素上存取数据. 通过data()函数存取的数据都是临时数据,一旦页面刷新,之前存放的数据都将不复存在. 该函数属于jQuery对象(实例).如 ...
- 如何查看WinDbg扩展有哪些命令
如果您想查看任何windbg扩展所支持的命令,可以采用各种方法. 你可以用!<ext_name>.help命令查看该扩展支持的所有命令.用扩展模块名替换<ext_name>.( ...
- RookeyFrame 一些心得 或者 调试技巧等
因为没有依赖具体的实现层,类库的输出路径又没有设置在web层的bin目录,所以每次都要拷贝实现层的DLL过去,有时候拷贝过去了还是没有反应,估计是缓存什么的吧, 解决:先那几个web层bin目录的 D ...
- 再见Spring Boot 1.x
记得很早很早之前有过一次面试,面试前端说自己喜欢JavaScript,然后面试官问,你知道当前JavaScript最新标准和规范吗?我无言以对,因为平时没有关注认真对待这些信息,然后就没有然后了. 或 ...
- LOJ3097 SNOI2019 通信 题解
题目链接 费用流,当建边需要依靠位置和权值两个偏序关系时,可以用cdq分治优化建边. 代码: #include<bits/stdc++.h> using namespace std; #d ...
- 第09组 Alpha冲刺(6/6)
队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 博客撰写,文档,答辩材料整理. 展示GitHub当日代码/文档签入记录 接下来的计划 QA. 还剩下哪些 ...