如何在Rails的MiniMagick中获取info:返回的黑边像素值?
用MiniMagick获取图片黑边像素值的正确方法
你的问题核心是缺少了ImageMagick的info:输出目标参数,以及set方法的调用格式有误。
原Bash命令里的info:是告诉ImageMagick不要处理图片,而是把format指定的计算结果输出到标准输出。你的MiniMagick代码没加这个参数,所以默认返回了图片元信息,而非所需的margin值。
修正后的代码
convert = MiniMagick::Tool::Convert.new convert << "test.jpg" convert.fuzz("10%") convert.set("page", "%[@]") # 分开传递参数名和值,避免引号解析问题 convert.format("%[fx:h-page.height-page.y]") convert << "info:" # 关键:添加此参数触发计算结果输出 margin = convert.call.strip # 去除空白,得到纯数字 puts margin
关键修正点
- 添加
info:参数:这是让ImageMagick返回格式化计算值的核心,没有它会默认输出图片文件信息。 - 修正
set方法调用:原代码convert.set('page "%[@]"')会生成带引号的参数page "%[@]",和Bash命令的page %[@]不一致,分开传递"page"和"%[@]"才能生成正确的命令。
验证命令正确性
修改后调用convert.command.join ' '会得到和原Bash完全一致的命令:
convert test.jpg -fuzz 10% -set page %[@] -format %[fx:h-page.height-page.y] info:
执行后就能得到类似140的黑边像素值,直接用于后续的裁剪操作即可。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

