如何提高作物尺寸

时间:2017-02-25 03:08:53

标签: imagemagick crop image-manipulation minimagick

我正在使用minimagick。我正在使用resize_to_fit: [300, nil]向用户显示图像,然后使用jcrop允许它们裁剪图像。我正在保存jcrop坐标的宽度,高度,x和y。

我想使用这些坐标裁剪更大版本的图像。为了获得这个更大的版本,我在原始版本上使用resize_to_fit: [600, nil]

我想使用大小和偏移来裁剪图像,但显然我不能使用jcrop中的坐标。

有没有办法升级坐标,以便当我用它们裁剪600px宽的图像时,它看起来与用户为300px宽图像输入的内容相同?

1 个答案:

答案 0 :(得分:1)

我的工作流程就是你描述的内容,除了 我使用的图像缩放了25%。

我使用ImageMagick"显示"裁剪缩放的图像。或者GraphicsMagick"显示"并保存为PNG(使用相同的文件名 只有扩展名从JPG更改为png)。这记录了裁剪 PNG IHDR和PNG oFFs块中的几何体。然后我运行一个脚本 " recrop.sh"根据这些尺寸裁剪原始图像, 缩小4倍,并将结果保存为PPM(无损 并摆脱原始JPEG中恼人的元数据。这是我的 " recrop.sh" (基于GraphicsMagick)脚本:

root=`echo $1 | sed -e "s/.png//"`

gm identify $root.png
string=`gm identify $root.png`

echo string=$string

resize_x=\
`echo $string | sed -e "s/.* PNG //" -e "s/ Direct.*//" -e "s/x.*//"`

resize_y=\
`echo $string | sed -e "s/.* PNG [0-9]*x//" -e "s/+.*//"`

offset_x=\
`echo $string | sed -e "s/.* PNG [0-9x]*[0-9x]*+//" -e "s/+.*//"`

offset_y=\
`echo $string | sed -e "s/.* PNG [0-9x]*[0-9x]*+[0-9]*+//" -e "s/ .*//"`

resize_x=`dc "-e $resize_x 4 * p"`
resize_y=`dc "-e $resize_y 4 * p"`
offset_x=`dc "-e $offset_x 4 * p"`
offset_y=`dc "-e $offset_y 4 * p"`

echo resize_x = $resize_x
echo resize_y = $resize_y
echo offset_x = $offset_x
echo offset_y = $offset_y

crop=$resize_x\x$resize_y+$offset_x+$offset_y

echo crop geometry=$crop

gm convert $root.JPG -crop $crop $root.ppm