如何放大裁剪尺寸

How to upscale crop dimensions

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

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

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

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

我的工作流程和你描述的差不多,除了 我使用精确缩放 25% 的图像。

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

root=`echo  | 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