2017-02-25 95 views
0

我正在使用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 
相關問題