2017-02-25 4 views
0

J'utilise minimagick. J'utilise resize_to_fit: [300, nil] pour afficher une image à un utilisateur, puis utiliser jcrop pour lui permettre de recadrer l'image. Je sauve les coordonnées jcrop width, height, x et y.Comment augmenter les dimensions de la récolte

Je souhaite utiliser ces coordonnées pour recadrer une version plus grande de l'image. Pour obtenir cette version plus grande j'utilise resize_to_fit: [600, nil] sur l'original.

Je voudrais recadrer l'image en utilisant la taille et le décalage, mais évidemment je ne peux pas utiliser les coordonnées que j'ai de jcrop.

Existe-t-il un moyen d'augmenter la taille des coordonnées de sorte que lorsque je les utilise pour rogner l'image large 600px, il ressemble à ce que l'utilisateur a saisi pour l'image large 300px?

Répondre

1

Mon flux de travail correspond à peu près à ce que vous décrivez, à l'exception de que je travaille avec des images dont la taille est exactement de 25%.

Je recadre l'image mise à l'échelle en utilisant ImageMagick "display" ou "display" de GraphicsMagick et enregistrer en tant que PNG (en utilisant le même nom de fichier avec seulement l'extension changée de JPG en png). Cela enregistre la géométrie de recadrage dans les blocs de données PNG IHDR et PNG. Ensuite, je lance un script "recrop.sh" pour recadrer l'image d'origine en fonction de ces dimensions, redimensionnée en 4x, et enregistrer le résultat en tant que PPM (qui est sans perte et se débarrasse des métadonnées ennuyeuses dans le JPEG original) . Voici mon script "recrop.sh" (basé sur 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