2017-02-25 5 views
0

minimagick을 사용하고 있습니다. resize_to_fit: [300, nil]을 사용하여 이미지를 사용자에게 표시 한 다음 jcrop을 사용하여 이미지 자르기를 허용합니다. jcrop 너비, 높이, x 및 y 좌표를 절약하고 있습니다.작물 치수를 상향 조정하는 방법

큰 이미지 버전을 자르기 위해이 좌표를 사용하고 싶습니다. 이 큰 버전을 얻으려면 원래 resize_to_fit: [600, nil]을 사용하고 있습니다.

크기와 오프셋을 사용하여 이미지 자르기를하고 싶지만 jcrop에서 가져온 코드는 사용할 수 없습니다.

좌표를 상향 조정하여 600px 크기의 이미지를 자르면 사용자가 300px 크기의 이미지에 입력 한 것과 똑같이 보일 수 있습니다.

답변

1

워크 플로우는 내가 설명하는 내용과 비슷합니다. 단, 정확하게 작업 한 이미지는 입니다.

ImageMagick의 "display"또는 GraphicsMagick의 "display"를 사용하여 크기 조정 된 이미지를 자르고 PNG로 저장합니다 (확장명 만 JPG에서 png로 변경된 동일한 파일 이름 사용). 이렇게하면 자르기 이 PNG IHDR 및 PNG oFFs 청크에 기록됩니다. 그런 다음 크기가 4 배로 축소 된 원본 이미지를 자르기 위해 "recrop.sh"스크립트를 실행하고 결과를 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