Quadratische Thumbnails mit ImageMagick (konvertieren)?


Antworten:


19

Dies wird in der offiziellen ImageMagick-Dokumentation unter „Zuschneiden der Miniatur“ erläutert :

Eine Alternative besteht darin, das Bild nicht so auszublenden, dass es der gewünschten Miniaturbildgröße entspricht, sondern die Teile des Bildes auszuschneiden, die nicht der endgültigen Größe entsprechen.

Das bedeutet natürlich, dass Sie tatsächlich einige Teile des Originalbilds verlieren, insbesondere die Bildränder, aber das Ergebnis ist eine vergrößerte Miniaturansicht des mittleren Teils des Bildes. Dies ist normalerweise (aber nicht immer) das Hauptmotiv des Bildes, daher handelt es sich um eine praktische Methode zur Erstellung von Miniaturansichten.

Ab IM v6.3.8-3 wurde das spezielle Größenänderungsoptionsflag '^' hinzugefügt, um dies zu vereinfachen. Wir ändern einfach die Größe mit dieser Flagge und schneiden dann die Teile des Bildes ab, die über die gewünschte Größe hinausgehen.

Und im Kontext eines Beispielbefehls:

convert -define jpeg:size=200x200 hatching_orig.jpg  -thumbnail 100x100^ \
          -gravity center -extent 100x100  cut_to_fit.gif

7
Möglicherweise ... irgendeine Art von Beschreibung?
Hallo71

Ich liebe Ignacios
klare

55

Ignacio hat auf die richtige Dokumentation verwiesen, ich füge sie jedoch der Einfachheit halber hier ein:

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

In ähnlicher Weise gilt für GraphicsMagick Folgendes:

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, damit Speicherplatz gespart und das Quellbild schneller gelesen werden kann
  • -thumbnail 100x100^ Schnelle Größenänderung, wodurch die kürzeste Seite 100 wird
  • - gravity center zentrieren Sie die nächste Operation
  • -extent 100x100 Wenden Sie das Bild auf eine Leinwand von 100 x 100 an
  • +profile "*" speichere keine Metainfo im JPEG (verkleinere das resultierende Bild)

3
Als ich es in der Kommandozeile benutzte (Grafik magisch eins), bekam ich ein Bild in der Mitte, zwei Seiten sind mit Weiß gefüllt. Nicht die in Frage beschriebene. Mache ich etwas falsch?
Umut Benzer

2
Wenn Sie Windows verwenden, müssen Sie das ^ -Zeichen verdoppeln, um es auszublenden. ZB: -dumbnail 100x100 ^^
George Filippakos

3
Warum nicht 100x100?
Hallo Welt

@HelloWorld: Lies "Imagemagick Geometry". Google es, es wird leicht zu finden sein.
Saurabheights

11

Das geht einfacher:

Mit dem folgenden Befehl wird die kleinere Seite auf 100 Pixel verkleinert und ein Quadrat von 100 x 100 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 wird nicht versucht, Speicherplatz zu sparen. Stattdessen macht es, was Sie wollen, und nicht mehr. Außerdem werden Bilder nicht hochskaliert.


Wenn Sie einer Frage mit festgelegten 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

2
Danke, ich weiß nicht, warum die anderen ihre Antworten übertrieben kompliziert haben, um Speicher zu sparen, wenn OP überhaupt nichts darüber erwähnt.
confused00

2

Ich benutze GraphicsMagick, um Miniaturansichten mit präziser Größe zu erstellen, aber ich fülle das Bild mit einem Schachbrettmuster auf, 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

Ich denke, Sie suchen nach etwas wie:

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

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


Das zugeschnittene Bild, aber keine Miniaturansicht.
Marioosh

1
@ Marioosh: Ich habe nicht verstanden, Sie können convert -thumbnail 100x100+50+50 input_image.jpg output_image.jpgfür weitere Informationen überprüfen Igancio Vazquez Antwort für ein Beispiel oder überprüfen Sie die Dokumentation
pconcepcion

1

Dieser Befehl schneidet auf ein Quadrat zu und ändert dann die Größe auf 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

Weitere Optionen stehen hier zur Verfügung: http://www.imagemagick.org/Usage/thumbnails/#square

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.