ImageMagick trim:minSize参数不生效问题排查求助
ImageMagick trim:minSize 参数不生效问题排查
我有一批带白边的扫描图片,需要用ImageMagick自动裁剪白边,同时通过设置最小尺寸避免过度裁剪(防止内容背景为白色时误裁)。之前用裁剪后加边框的方案,效果不理想。
我按照官方文档使用trim:minSize参数,但输出未遵循最小尺寸限制:
# magick -verbose input.tif -fuzz 5% -define trim:minSize=2310x2600 -trim output.tif input.tif TIFF 2368x2633 2368x2633+0+0 8-bit TrueColor sRGB 16.915MiB 0.020u 0:00.025 input.tif=>output.tif TIFF 2368x2633=>2301x2586 2368x2633+67+0 8-bit TrueColor sRGB 17.0247MiB 0.020u 0:00.022
输入图input.tif分辨率为2368x2633像素,输出却被裁剪到2301x2586像素,未满足trim:minSize=2310x2600的限制。
环境信息
已将ImageMagick更新至7.1.0-48版本(Gentoo Linux环境):
# magick -version Version: ImageMagick 7.1.0-48 Q16 x86_64 20449 https://imagemagick.org Copyright: (C) 1999 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Cipher DPC Modules OpenCL OpenMP(4.5) Delegates (built-in): bzlib cairo freetype jng jpeg lcms ltdl pangocairo png rsvg tiff x xml zlib Compiler: gcc (11.3)
多次测试验证
使用719x800像素的PNG测试图验证,问题依然存在:
- 基础裁剪:输出分辨率676x784像素
# magick -verbose input.png -fuzz 15% -trim output.png input.png PNG 719x800 719x800+0+0 8-bit sRGB 805860B 0.010u 0:00.011 input.png=>output.png PNG 719x800=>676x784 719x800+29+2 8-bit sRGB 805860B 0.210u 0:00.191
- 设置
trim:minSize=710x799并添加-gravity south:输出分辨率707x798像素(小于最小尺寸)
# magick -verbose input.png -define trim:minSize=710x799 -gravity south -fuzz 15% -trim output.png input.png PNG 719x800 719x800+0+0 8-bit sRGB 805860B 0.010u 0:00.010 input.png=>output.png PNG 719x800=>707x798 719x800+12+2 8-bit sRGB 805860B 0.220u 0:00.198
- 去掉
-gravity south:输出分辨率690x798像素(远小于最小尺寸)
# magick -verbose input.png -define trim:minSize=710x799 -fuzz 15% -trim output.png input.png PNG 719x800 719x800+0+0 8-bit sRGB 805860B 0.010u 0:00.010 input.png=>output.png PNG 719x800=>690x798 719x800+29+2 8-bit sRGB 805860B 0.220u 0:00.193
尝试用+gravity、+repage重置参数,输出仍为690x798像素。
用lena_b50.png测试组合-gravity与trim:edges参数,部分场景下trim:minSize仍不生效:
- 设置
trim:minSize=300x300、-gravity south、trim:edges=east,south,west,输出为256x306像素(小于最小尺寸) - 设置
trim:minSize=330x330、trim:edges=east,south,west,输出为306x330像素(尺寸异常) - 添加
-gravity south后输出330x330像素符合要求,但将minSize改为300x300时又失效,输出256x306像素。
疑问
请问是我命令参数使用错误,还是ImageMagick的trim:minSize功能本身存在问题?
内容的提问来源于stack exchange,提问作者midnite
相关产品推荐
相关产品推荐

