You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对编号图像序列指定帧范围进行裁剪拼接并输出为PNG?

处理编号图像序列:指定帧范围、裁剪与PNG输出方案

下面提供两种主流工具的实现方法,按需选择即可:


方案一:使用FFmpeg(适合批量处理+多媒体场景)

1. 裁剪指定帧并逐个输出PNG

假设需要裁剪每帧左上角100×100区域,处理20-30帧:

ffmpeg -start_number 20 -i frame%03d.jpg -vframes 11 -vf "crop=w=100:h=100:x=0:y=0" -q:v 0 output%03d.png

参数说明:

  • -start_number 20:从第20帧开始处理
  • -vframes 11:总处理11帧(20到30共11帧)
  • -vf "crop=w=100:h=100:x=0:y=0":裁剪规则(宽、高、左上角坐标,可按需修改)
  • -q:v 0:PNG无损压缩,保证画质

如果要处理5-75帧,仅需调整参数:

ffmpeg -start_number 5 -i frame%03d.jpg -vframes 71 -vf "crop=w=100:h=100:x=0:y=0" -q:v 0 output%03d.png

2. 裁剪指定帧并拼接成单张长图输出PNG

横向拼接裁剪后的帧:

ffmpeg -start_number 20 -i frame%03d.jpg -vframes 11 -vf "crop=100:100:0:0,hstack" output_stacked.png

纵向拼接则把hstack替换为vstack:

ffmpeg -start_number 20 -i frame%03d.jpg -vframes 11 -vf "crop=100:100:0:0,vstack" output_stacked.png

方案二:使用ImageMagick(适合纯图像处理场景)

1. 裁剪指定帧并逐个输出PNG

处理20-30帧,裁剪左上角100×100区域:

for i in {20..30}; do
  magick frame$(printf "%03d" $i).jpg -crop 100x100+0+0 output$(printf "%03d" $i).png
done

处理5-75帧时,把{20..30}改为{5..75}即可。

2. 裁剪指定帧并拼接成单张长图输出PNG

横向拼接:

magick $(for i in {20..30}; do echo frame$(printf "%03d" $i).jpg; done) -crop 100x100+0+0 +append output_stacked.png

纵向拼接则把+append替换为-append:

magick $(for i in {20..30}; do echo frame$(printf "%03d" $i).jpg; done) -crop 100x100+0+0 -append output_stacked.png

通用注意事项

  • 裁剪规则可灵活调整:比如要裁剪原图像(1920×1080)中间800×600区域,裁剪参数为crop=800:600+560+240(计算方式:(1920-800)/2=560,(1080-600)/2=240)
  • 确保工具已安装:Linux用包管理器(如apt install ffmpeg imagemagick),Windows/macOS可从官网下载安装包

内容的提问来源于stack exchange,提问作者Benjamin Allison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:10:26