image-processing - 使用 FFmpeg 将 JPEG 图像序列无损合并到网格中
问题描述
我有一系列图像,它们是更大图像的块,它们共同构成了整个图像。这些块是沿均匀间隔的水平和垂直线分割原始图像的结果,因此它们没有奇怪的尺寸。
有没有办法在不重新编码图像的情况下将它们与 FFmpeg(或 ImageMagick 之类的其他东西)结合起来?
这个答案建议使用hstack
or vstack
FFmpeg 过滤器,但我的图像块不一定是原始图像的全宽或全高。
像这样:
也许这可以通过使用hstack
or的多个 FFmpeg 命令来实现vstack
(尽管我更喜欢一个命令)。还是使用复杂的过滤器?
例如
编辑:我尝试filter_complex
与 FFmpeg 一起使用:
ffmpeg -i 0.jpg -i 1.jpg -i 2.jpg -i 3.jpg -i 4.jpg -i 5.jpg \
-filter_complex "[0][1]hstack=inputs=2[row 0]; \
[2][3]hstack=inputs=2[row 1];
[4][5]hstack=inputs=2[row 2];
[row 0][row 1][row 2]vstack=inputs=3[out]" \
-map "[out]" -c copy out.jpg
但它不能同时过滤和复制流。
解决方案
你可以用 ImageMagick 做到这一点。但是,它将解压缩并重新压缩您的 jpg 文件。你会失去一些品质。
IM 6 的 Unix 语法:
convert \
\( 0.jpg 1.jpg +append \) \
\( 2.jpg 3.jpg +append \) \
\( 4.jpg 5.jpg +append \) \
-append \
mona_lisa.jpg
如果使用 Windows,请从括号中删除 \ 并将行尾替换为 ^。
如果使用 IM 7,请将 convert 替换为 magick。
推荐阅读
- android - 确定 Android Q 上现有的文件访问权限
- javascript - JavaScript:将字符串与所有必需的字符匹配
- reactjs - 使用 AWS Amplify 在 React 上生成自定义 Graphql 模式
- amazon-web-services - 如何使用 AWS 负载均衡器检查 IP 更改?
- nlp - 如何对后面有位置编号的店铺名称进行分组?
- jmeter - 在 jmeter 中,我如何通过在其中放入多个 http 请求来运行事务控制器?
- macos - 有没有办法自动将密码传递给 sudo 而无需输入?
- reactjs - 运行带有以下错误消息的反应应用程序时如何处理错误?
- python - 在 Python 中迭代 JSON
- angular - 对于 angular 8,如何解决这个问题?