Réponses:
Ceci est expliqué dans la documentation officielle d'ImageMagick sous «Couper la vignette pour l'adapter» :
Une alternative, plutôt que de masquer l'image pour l'adapter à la taille de vignette spécifique que nous voulons, consiste à couper les parties de l'image qui ne correspondent pas à la taille finale.
Bien sûr, cela signifie que vous perdez en fait certaines parties de l'image d'origine, en particulier les bords de l'image, mais le résultat est une miniature agrandie de la partie centrale de l'image. C'est généralement (mais pas toujours) le sujet principal de l'image, c'est donc une méthode pratique de création de vignettes.
À partir d'IM v6.3.8-3, l'indicateur d'option de redimensionnement spécial '^' a été ajouté pour faciliter les choses. Nous redimensionnons simplement en utilisant ce drapeau, puis recadrons les parties de l'image qui débordent de la taille souhaitée.
Et dans le cadre d'un exemple de commande:
convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail 100x100^ \
-gravity center -extent 100x100 cut_to_fit.gif
Ignacio lié à la documentation correcte, mais je vais la coller en ligne ici pour plus de commodité:
convert -define jpeg:size=200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 thumbnail.jpeg
De même, ce qui suit est 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 l'image source plus rapidement-thumbnail 100x100^
redimensionnement rapide faisant le côté le plus court 100- gravity center
centrer la prochaine opération-extent 100x100
appliquer l'image à une toile 100x100+profile "*"
n'enregistrez pas de métainfo dans le 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 petit côté à 100 pixels et recadre un carré de 100 x 100. Vous pouvez ajouter une -strip
commande pour réduire la taille du fichier.
convert original.jpg -resize "100^>" -gravity center \
-crop 100x100+0+0 -strip thumbnail.jpg
Contrairement à d'autres, il n'essaie pas d'économiser de la mémoire. Au lieu de cela, il fait ce que vous voulez, et pas plus. De plus, il n'améliorera pas les images.
J'utilise graphicsmagick pour générer des vignettes de taille précise, mais je remplis l'image avec un damier au lieu de recadrer 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 la taille du rectangle final et 50x50
le décalage .
convert -thumbnail 100x100+50+50 input_image.jpg output_image.jpg
, pour plus d'informations, consultez la réponse d'Igancio Vazquez pour un exemple ou consultez la documentation
Cette commande recadre en carré puis redimensionne à 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