AI工具人
提示词工程师

使用ffmpeg拼接两张图片

  最近在工作中遇到了一个需求,就是需要将两张图片拼接在一起,作为一个封面图。如果只是临时拼接一张,我们可以只用photoshop之类的图片编辑工具,将两张图片拼接在一起。而我们的需要是需要实现自动化,由于之前使用过ffmpeg做过图片的操作,于是搜索了下,ffmpeg确实能实现两张图片的拼接,这里分享下相关操作的命令行。

  为了方便演示拼接效果,我这里提前准备了两张图片,cat.jpg和dog.jpg。如果想练习本文中所涉及到的命令行,也可以直接下载这两张图。
在这里插入图片描述
在这里插入图片描述

备注:ffmpeg拼接图片时要求图片大小一致,所以我已经提前将两种图片预处理成同样大小的方形图片了。

水平or垂直拼接

  首先是最简单的两种拼接,也就是直接将这俩张图水平或者垂直拼接在一起,我们先看垂直拼接命令行和效果。

ffmpeg -i cat.jpg -i dog.jpg -filter_complex vstack vout.jpg

在这里插入图片描述
  再看下水平拼接的命令行和效果:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex hstack hout.jpg

在这里插入图片描述
  这里最重要的参数就是-filter_complex hstack-filter_complex vstack 其中h代表英文单词horizontal,v代表英文单词vertical。

部分拼接

  如果我们只想让两张图的部分拼接在一起,防止图片过宽或者过长,我们也可以filter_complex增加一些更复杂的参数来分别截取部分内容拼接起来,如下:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex "[0:v]crop=960:1920:0:0[img1];[1:v]crop=960:1920:0:0[img2];[img1][img2]hstack" phoutput.jpg

  其中[0:v]和[1:v]分别表示第一张图片和第二张图片的画面。crop=960:1920:0:0表示截取大小为960:1920的区域,后面的0:0表示从坐标0:0点(左上角)开始截取,[img1]和[img2]是临时命名的截取后的图片。hstack表示水平拼接,最后的拼接效果如下:
在这里插入图片描述
  我们也可以截取狗狗图的右半部分,只需要将命令行中的第二个crop=960:1920:0:0 替换成 crop=960:1920:960:0即可,完整命令和拼接效果如下:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex "[0:v]crop=960:1920:0:0[img1];[1:v]crop=960:1920:960:0[img2];[img1][img2]hstack" phoutput1.jpg

在这里插入图片描述
  这里相信你也能自己拼出来垂直拼接的命令了,完整命令和拼接效果如下:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex "[0:v]crop=1920:960:0:0[img1];[1:v]crop=1920:960:0:960[img2];[img1][img2]vstack" pvoutput.jpg

在这里插入图片描述

总结

  通过本篇文章的介绍,我们了解了使用FFmpeg拼接两张图片的方法。可以看到出来,使用ffmpeg将两张图片拼接在一起还是相当简单的。希望这篇文章能够对大家有所帮助,如果您有任何疑问或者建议,欢迎在评论区留言。

赞(0) 打赏
未经允许不得转载:XINDOO » 使用ffmpeg拼接两张图片

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫