Quadratische Miniaturbilder mit ImageMagick (konvertieren)?

24703
marioosh

Wie kann ich mit ImageMagick quadratische / beschnittene Miniaturbilder erstellen? Zuschneiden wie unten.

cropping

28

6 Antworten auf die Frage

47
Jonah Braun

Ignacio hat auf die richtige Dokumentation verlinkt, ich füge es hier jedoch aus Gründen der Übersichtlichkeit ein:

convert -define jpeg:size=200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 thumbnail.jpeg 

Ähnlich gilt für GraphicsMagick:

gm convert -size 200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 +profile "*" thumbnail.jpeg 

Erläuterung:

  • -size 200x200 teilt dem JPEG-Decoder mit, dass wir nur diese Auflösung benötigen, um Speicherplatz zu sparen und das Quellbild schneller zu lesen
  • -thumbnail 100x100^ Schnelle Größenänderung für die kürzeste Seite 100
  • - gravity center zentrieren Sie die nächste Operation
  • -extent 100x100 Wenden Sie das Bild auf eine Leinwand von 100x100 an
  • +profile "*" Speichern Sie kein Metainfo im JPEG-Format (das resultierende Bild wird kleiner).
Als ich es in der Kommandozeile verwendete (Grafik-Magick), bekam ich ein Bild in der Mitte, zwei Seiten sind mit Weiß gefüllt. Nicht der in Frage stehende. Mache ich etwas falsch? Umut Benzer vor 12 Jahren 3
Wenn Sie Windows verwenden, müssen Sie das Zeichen ^ verdoppeln, um es zu umgehen. ZB: -thumbnail 100x100 ^^ George Filippakos vor 11 Jahren 2
Warum nicht die Größe 100x100? Hello World vor 10 Jahren 3
@HelloWorld: Lesen Sie "Imagemagick Geometry". Google wird es leicht finden. saurabheights vor 7 Jahren 0
16
Ignacio Vazquez-Abrams

Dies wird in der offiziellen ImageMagick-Dokumentation unter "Cut the Thumbnail to Fit" erklärt :

Eine Alternative besteht darin, das Bild an die von Ihnen gewünschte Miniaturbildgröße anzupassen, statt es auszufüllen, statt die Teile des Bildes abzuschneiden, die nicht zur endgültigen Größe passen.

Dies bedeutet natürlich, dass Sie tatsächlich einige Teile des Originalbildes verlieren, insbesondere die Bildränder, aber das Ergebnis ist eine vergrößerte Miniaturansicht des mittleren Bildteils. Dies ist in der Regel (aber nicht immer) das Hauptmotiv des Bildes. Daher ist es eine praktische Methode zur Erstellung von Miniaturansichten.

Ab IM v6.3.8-3 wurde das Sonderoptionsflag '^' hinzugefügt, um dies zu erleichtern. Die Größe wird mit diesem Flag geändert, und dann werden die Teile des Bildes abgeschnitten, die die gewünschte Größe überschreiten.

Und im Kontext eines Beispielbefehls:

convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail 100x100^ \ -gravity center -extent 100x100 cut_to_fit.gif 
Möglicherweise ... irgendeine Art von Beschreibung? Hello71 vor 13 Jahren 7
Ich liebe Ignacios point blank Antworten :-) Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 7 Jahren 0
9
Reinaldo Guedes

Das ist eine einfachere Möglichkeit, dies zu tun:

Mit dem folgenden Befehl wird die kleinere Seite auf 100 Pixel verkleinert und ein 100x100-Quadrat zugeschnitten. Sie können einen -stripBefehl hinzufügen, um die Dateigröße zu reduzieren.

convert original.jpg -resize "100^>" -gravity center \  -crop 100x100+0+0 -strip thumbnail.jpg 

Im Gegensatz zu anderen versucht es nicht, Speicher zu sparen. Stattdessen macht es, was Sie wollen und nicht mehr. Außerdem werden Bilder nicht hochskaliert.

Wenn Sie zu einer Frage mit etablierten Antworten eine späte Antwort hinzufügen, ist es hilfreich, ausreichend zu erklären, warum Ihre Antwort im Vergleich zu den anderen Antworten etwas Einzigartiges und Neues bietet. Jason Aller vor 10 Jahren 0
Danke, ich weiß nicht, warum die anderen ihre Antworten zu kompliziert gemacht haben, um zu versuchen, Speicher zu sparen, wenn OP nichts darüber erwähnt. confused00 vor 8 Jahren 1
2
Ryan Williams

Ich verwende Graphicsmagick, um Thumbnails mit einer genauen Größe zu generieren, aber das Bild wird mit einem Schachbrett aufgefüllt, anstatt den Überhang zu beschneiden.

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 

Optionen erklärt.

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 
1
pconcepcion

Ich denke du suchst nach etwas wie:

convert -crop 100x100+50+50 input_image.jpg output_image.jpg 

wo 100x100ist die Größe des endgültigen Rechtecks ​​und 50x50des Versatzes .

Das zugeschnittene Bild, aber kein Miniaturbild. marioosh vor 13 Jahren 0
@marioosh: Ich habe es nicht verstanden, Sie können `convert -thumbnail 100x100 + 50 + 50 input_image.jpg output_image.jpg 'verwenden. Weitere Informationen finden Sie in der Antwort von Igancio Vazquez oder in der [Dokumentation] (http: // www.imagemagick.org/script/command-line-options.php#thumbnail) pconcepcion vor 13 Jahren 1
1
michaelbn

Dieser Befehl wird auf ein Quadrat zugeschnitten und dann auf 150 x 150 verkleinert

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 

Weitere Optionen finden Sie hier: http://www.imagemagick.org/Usage/thumbnails/#square