如何放大裁剪尺寸
Posted
技术标签:
【中文标题】如何放大裁剪尺寸【英文标题】:How to upscale crop dimensions 【发布时间】:2017-02-25 03:08:53 【问题描述】:我正在使用 minimagick。我正在使用resize_to_fit: [300, nil]
向用户显示图像,然后使用 jcrop 允许他们裁剪图像。我正在保存 jcrop 坐标宽度、高度、x 和 y。
我想使用这些坐标来裁剪更大版本的图像。为了得到这个更大的版本,我在原版上使用了resize_to_fit: [600, nil]
。
我想使用尺寸和偏移量来裁剪图像,但显然我不能使用 jcrop 提供的坐标。
有没有办法放大坐标,以便当我使用它们裁剪 600 像素宽的图像时,它看起来与用户为 300 像素宽的图像输入的一样?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何放大裁剪尺寸的主要内容,如果未能解决你的问题,请参考以下文章