惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
Martin Fowler
Martin Fowler
Last Week in AI
Last Week in AI
罗磊的独立博客
阮一峰的网络日志
阮一峰的网络日志
博客园 - 【当耐特】
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
博客园_首页
人人都是产品经理
人人都是产品经理
量子位
美团技术团队
The Cloudflare Blog
小众软件
小众软件
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
博客园 - Franky

XINDOO

关于内卷,几个值得深想的洞察 当创作被 Skill 化:我用 AI 写了一部 320 章的长篇网文 AI第一剑,先斩程序员 AI 也会偷懒?这个 PUA 工具专治“摸鱼式编程” Gstack 深度解析:YC CEO 开源的 AI 工程团队 GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers 深度探讨:从 OpenClaw 爆火,看 AI Agent 的真相与程序员的未来 我复刻了NotebookLM的信息图功能 我用AI写了部小说,这里是整个过程 [翻译]我在谷歌14年学到的21堂课 2万字吊打40万字:为什么我的“牛马Agent”比“数字分身”更聪明? 最近AI领域爆火的 Agent Skills 是什么? 从计算机科学的视角来看拖延症 一周改6个库后我悟了:AI时代,程序员正在退化成“甲方” 使用n8n做一个自动同步更新的Github项目问答机器人 Agent设计模式——第 20 章:优先级排序 Agent设计模式——第 1 章:提示词链 Agent设计模式——附录 D - 使用 AgentSpace 构建 Agent Agent设计模式——第 19 章:评估和监控 Agent设计模式——第 10 章:模型上下文协议 (MCP) Agent设计模式——第 21 章:探索和发现 Agent设计模式——智能体设计模式 Agent设计模式——第 11 章:目标设定和监控 Agent设计模式——第 9 章:学习和适应 Agent设计模式——第 16 章:资源感知优化 Agent设计模式——附录 G - 编码 Agent Agent设计模式——第 13 章:人机协同 Agent设计模式——第 17 章:推理技术 Agent设计模式——附录 F - 深入剖析:Agent 推理引擎的内部运作机制 Agent设计模式——章节目录
使用ffmpeg拼接两张图片
xindoo · 2023-05-05 · via XINDOO

  最近在工作中遇到了一个需求,就是需要将两张图片拼接在一起,作为一个封面图。如果只是临时拼接一张,我们可以只用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将两张图片拼接在一起还是相当简单的。希望这篇文章能够对大家有所帮助,如果您有任何疑问或者建议,欢迎在评论区留言。