image - FFMPEG:如何在 jpg 上叠加大尺寸 png

标签 image ffmpeg overlay

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为 on-topic对于堆栈溢出。


21 天前关闭。







Improve this question




我正在尝试使用 ffmpeg 来实现以下目标:
x.jpg = 大小为 540x540 的文件。
Gradient.png = 具有半透明渐变的 540x960 图像(从顶部没有透明度的深蓝色开始,然后在底部逐渐变为透明)
example of Gradient.png attached
我们的目标是最终得到一个 540x960 的 jpg,其中 x.jpg 位于框架的底部 540x540,而 Gradient.png 位于其顶部。因为 Gradient.png 较大,这似乎会造成问题。
我试过了:

ffmpeg.exe -i x.jpg -i Gradient.png -filter_complex overlay=0:480 -c:v png -pix_fmt rgba out.png
这只是创建一个 540x540 帧,所以不起作用。不过感觉很亲近。如果我知道如何扩大“ Canvas ”,这可能会奏效。
我试过了。
ffmpeg.exe -i Gradient.png -i x.jpg -filter_complex overlay=0:480 -c:v png -pix_fmt rgba out.png
它确实创建了一个 540x960 帧,但 Gradient.png 不在 1.jpg 之上,相反的情况发生在这里,所以我没有像我需要的那样得到 x.jpg 顶部显示的半透明效果。
任何帮助将不胜感激
编辑:
我能够分两步完成。
ffmpeg -i x.jpg -vf "scale=540:960:force_original_aspect_ratio=decrease,pad=540:960:(ow-iw)/2:(oh-ih)"-c:v png -pix_fmt rgba out.jpg
ffmpeg -i out.jpg -i Gradient.png -filter_complex overlay=0:0 OUT2.jpg
如果有人能想出一种方法来一步到位,那就太好了。

最佳答案

只需要先填充JPEG。ffmpeg -i x.jpg -i Gradient.png -filter_complex "[0]pad=540:960:0:oh-ih[x];[x][1]overlay=0:0" -c:v png -pix_fmt rgba out.png

关于image - FFMPEG:如何在 jpg 上叠加大尺寸 png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72698686/

相关文章:

android - 使用 ffmpeg-android 连接视频文件

ffmpeg - 为什么以下 ffmpeg 命令会输出 11 分钟长的视频?

CSS/HTML 定位 - 元素叠加内容

jquery - 当覆盖设置为 null 时,通过外部单击关闭 fancybox

Android - 使用 opencv 读取图像

python - 如何在 OpenCV 中创建自定义调色板的颜色直方图?

java - 图片上传不适用于小米手机

c++ - C++ 中 TCP 套接字的 recv 函数

python - 为什么 AudioSegment 不读取 'mp3' ?

overlay - 有关 JFreeChart 叠加的帮助