??最近在工作中遇到了一個需求,就是需要將兩張圖片拼接在一起,作為一個封面圖。如果只是臨時拼接一張,我們可以只用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的區(qū)域,后面的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
文章來源:http://www.zghlxwxcb.cn/news/detail-433041.html
總結
??通過本篇文章的介紹,我們了解了使用FFmpeg拼接兩張圖片的方法。可以看到出來,使用ffmpeg將兩張圖片拼接在一起還是相當簡單的。希望這篇文章能夠對大家有所幫助,如果您有任何疑問或者建議,歡迎在評論區(qū)留言。文章來源地址http://www.zghlxwxcb.cn/news/detail-433041.html
到了這里,關于使用ffmpeg拼接兩張圖片的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!