Comment créer une miniature carrée/recadrée en utilisant ImageMagick? Recadrage comme ci-dessous.
Ceci est expliqué dans la documentation officielle d'ImageMagick sous, "Couper la vignette pour l'ajuster" :
Une alternative consiste plutôt à couper les parties de l’image qui ne correspondent pas à la taille finale, plutôt que de masquer l’image pour l’adapter à la taille spécifique de la vignette souhaitée.
Bien sûr, cela signifie que vous perdez certaines parties de l'image d'origine, en particulier les bords de l'image, mais il en résulte une vignette agrandie de la partie centrale de l'image. C’est généralement (mais pas toujours) le sujet principal de l’image; il s’agit donc d’une méthode pratique de création de vignettes.
À partir de la version 6.3.8-3 d'IM, l'indicateur d'option de redimensionnement spécial '^' a été ajouté pour faciliter cette opération. Nous venons de redimensionner en utilisant cet indicateur, puis rogner les parties de l'image qui débordent de la taille souhaitée.
Et dans le contexte d'un exemple de commande:
convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail 100x100^ \
-gravity center -extent 100x100 cut_to_fit.gif
Ignacio a lié à la bonne documentation, mais je vais la coller ici pour plus de commodité:
convert -define jpeg:size=200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 thumbnail.jpeg
De même, voici ce qui suit pour GraphicsMagick:
gm convert -size 200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 +profile "*" thumbnail.jpeg
Explication:
-size 200x200
indique au décodeur jpeg que nous n'avons besoin que de cette résolution pour économiser de la mémoire et lire plus rapidement l'image source-thumbnail 100x100^
redimensionnement rapide faisant le côté le plus court 100- gravity center
centrer l'opération suivante-extent 100x100
applique l'image à un canevas 100x100+profile "*"
n'enregistrez pas de métainfo au format jpeg (ce qui rend l'image résultante plus petite)C'est une façon plus simple de le faire:
La commande suivante redimensionne le plus petit côté à 100 pixels et recadre un carré de 100x100. Vous pouvez ajouter une commande -strip
pour réduire la taille du fichier.
convert original.jpg -resize "100^>" -gravity center \
-crop 100x100+0+0 -strip thumbnail.jpg
Contrairement aux autres, il ne s'agit pas d'économiser de la mémoire. Au lieu de cela, il fait ce que vous voulez, et pas plus. De plus, il ne sera pas des images haut de gamme.
J'utilise graphicsmagick pour générer des vignettes de taille précise, mais je colore l'image avec un damier au lieu de rogner le surplomb.
gm convert -limit Threads 1 -size 320x180 pattern:checkerboard -background transparent -gravity center -resize 320x180 -extent 320x180 original.jpg -flatten -resize 112x65! -interlace Line 1 thumb_112x65.jpg
gm convert
// Single threaded seems faster on smaller files
-limit Threads 1
// Generate a checkerboard of size 320x180.
// Sets the relative size of the checkerboard squares,
// also sets the desired aspect ratio. In my case (16:9)
-size 320x180 pattern:checkerboard
// Resize the input image and center it on a transparent layer.
-background transparent -gravity center -resize 320x180 -extent 320x180 orig.jpg
// Merge the layers
-flatten
// Resize the output to the desired
// The ! causes the aspect ratio to be ignored, fixing any rounding errors.
// (Specify a size with the same aspect ratio as the checkerboard.)
-resize 112x65!
// Use Progressive JPEG Encoding
-interlace Line
// Output Image
thumb_112x65.jpg
Je pense que vous cherchez quelque chose comme:
convert -crop 100x100+50+50 input_image.jpg output_image.jpg
où 100x100
est le taille du rectangle final et 50x50
le offset.
Cette commande recadre à un carré et redimensionne ensuite à 150x150
convert 824-full.jpg -set option:size '%[fx:min(w,h)]x%[fx:min(w,h)]' xc:none +swap -gravity center -composite -resize 150x150 temp.jpg
Plus d'options sont disponibles ici: http://www.imagemagick.org/Usage/thumbnails/#square