我正在尝试使用 ImageMagick 编写视频创建脚本,以创建一些叠加层,然后将其放置在视频顶部。
如果我尝试直接使用 ImageMagick 创建的图像,透明度将被绘制为不透明。
我使用 ImageMagick 绘制命令创建了一个透明的 PNG。当加载到 GIMP 并检查时,PNG 有一个 alpha channel ,并且每个透明像素似乎都具有透明度:RGBA = 0,0,0,0
然后在 ffmpeg 中用作叠加层时,此图像在视频中仅具有不透明的黑色背景。
如果我再次从 GIMP 导出图像,则文件看起来相同,但在视频中仅显示为纯蓝色(覆盖图像中绘图的颜色)。
我可以通过获取覆盖图像,将其加载到 GIMP 中,然后选择所有图像并从剪贴板创建一个新图像并导出它(使用与我之前重新导出时完全相同的设置而不创建新文件)和它来解决这个问题然后将完全按照需要工作,显示覆盖的非透明部分而不显示透明部分。
关键问题:
我如何才能编写在 GIMP 中创建新文件时以某种方式发生的转换,或者(更好)一开始就不会出错?
这是两个文件:
splinter 的:
作品:
有什么区别?
最佳答案
我建议您在使用 ImageMagick 时在输出文件名前加上 PNG32:
强制它生成 32 位 ber 像素图像 - 即 R、G、B 和 Alpha 各 1 个字节,并希望 ffmpeg
对此更满意。
convert input.png -draw ... PNG32:output.png
如果你运行
identify -verbose
(也在 ImageMagick 套件中)在您损坏的图像和工作图像上,您会看到主要区别在于工作图像具有 color-type=6
和 bit-depth=8
而损坏的图像有color-type=3 (indexed)
和 bit-depth=4
关于ffmpeg - 在 Imagemagick 中创建的透明 PNG 在 FFMPEG 中绘制为不透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662697/