Was ist der Unterschied für die Operatoren sample / resample / scale / resize / adaptive-resize / thumbnail in ImageMagick convert?

84

Ich habe mehrere Möglichkeiten gefunden, um die Auflösung eines Bildes zu ändern convert:

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

Was ist der Unterschied von denen?

Wenn ich ein Miniaturbild in verschiedenen Größen für große Bilder mit festem Seitenverhältnis erstellen muss (Zuschneiden erforderlich) - was ist meine beste Wahl?

Europäische Sommerzeit
quelle
2
Diese URL - ImageMagick v6 Beispiele - Größe ändern oder skalieren sollte Ihnen helfen.
Harvey
Weitere Informationen finden Sie unter imagemagick.org/Usage/filter und imagemagick.org/Usage/filter/nicolas
fmw42

Antworten:

136

Größe ändern

-resize 400x300+20+30(wie die -scaleund -sampleBeispiele unten) wandelt ein Eingangssignal an ein Ausgabebild, das die Pixelabmessungen hat 400x300. Außerdem wird die Ausgabe um 20 Pixel nach rechts und um 30 Pixel nach unten verschoben. Darüber hinaus gibt es einige weitere Unterschiede zu -scale:

  • -resizeunterstützt eine zusätzliche Einstellung von -filter(die vor der Verwendung in der Befehlszeile erfolgen sollte -resize!).

  • -filter bestimmt den genauen Algorithmus, der für die Farben der hinzugefügten Pixel bei Vergrößerung oder für die Farben für die verbleibenden Pixel verwendet werden soll, wenn einige ihrer Nachbarn bei Verkleinerung entfernt werden.

  • Eine Liste der unterstützten Filter finden Sie einfach convert -list filter.

  • -filter point -resize 400x300erzeugt genau das gleiche Ergebnis wie -sample 400x300es, läuft aber immer noch etwas langsamer.

  • Wenn dies nicht neben (vorher) festgelegt wird -resize, wird die Konvertierung standardmäßig -filter Lanczoslangsamer eingestellt, erzeugt jedoch eine viel bessere Qualität (da die Farben aller umgebenden Pixel für neu hinzugefügte Pixel berücksichtigt werden) als die Erzeugung -filter point(bei der die nächste verwendet wird) Nachbarregel zur Bestimmung der Farbe neu hinzugefügter Pixel).

Stichprobe

-sample 400x300konvertiert ein Eingabebild in ein Ausgabebild mit den Pixelabmessungen von 400x300. Es gibt jedoch einige sehr wichtige Unterschiede zu -resize:

  • -sampleunterstützt nicht die zusätzliche Einstellung von -filter; Wenn es trotzdem eingestellt ist, -filterwird es einfach ignoriert.

  • Beim Vergrößern (da die Eingabebildgröße möglicherweise kleiner als ist 400x300) werden Pixel in Blöcken repliziert.

  • Beim Minimieren (da die Eingabebildgröße möglicherweise größer als ist 400x300) werden Pixel mit einem sehr einfachen Algorithmus unterabgetastet: Einige Zeilen und Spalten werden einfach übersprungen.

  • Das Geometrie Argument -sampleunterstützt keinen Offset - Teil ( im Gegensatz zu -resize, die Hinsicht Offset - Richtlinien für die Ausgabe).

  • Die Ausgabe wird niemals mehr (unterschiedliche) Farben haben als das Eingabebild; Es kann jedoch weniger Farben haben.

  • Daher -sampleist es sehr schnell (schneller als -resize) - aber die Ausgabequalität ist (normalerweise) schlechter: Sie können leicht extreme Blockierungs- und Aliasing- Effekte in der resultierenden Ausgabe erzielen.

  • Ein wichtiges Merkmal von -sampleist, dass das neue Bild keine neuen Farben enthält, obwohl einige Farben aus dem Originalbild möglicherweise verschwinden.

Resample

-resampleVerwendungen als Parameter die gewünschte XxY Auflösung , nicht nicht die PixelgeometrieXxY des Zielbildes. Der Zweck dieses Operators besteht darin, die gerenderte Größe eines Bildes beizubehalten: Angenommen, Ihr Bild misst 4 x 3 Zoll auf einem Gerät, das es mit 300 DPI rendert. Fragen Sie dann nach einem oder ändern Sie die Größe des Bilds so, dass es auf einem 72-DPI-Gerät (wieder) 4 x 3 Zoll misst.-resample 72-resample 72x72

  • Dieser Vorgang funktioniert nur für solche Bilder, deren Metadaten bereits eine gewünschte Auflösung gespeichert haben (nicht alle Bildformate unterstützen das Konzept einer Bildauflösung - JPEG, PNG und TIFF).

  • Wenn das Quellbild in einem Format vorliegt, in dem die interne Unterstützung für eine Bildauflösung fehlt, muss die (angenommene) ursprüngliche Auflösung des Bildes vor der Angabe der Auflösung über -densitydie Befehlszeile angegeben werden .-resample

Rahmen

-scale 400x300erzeugt das äquivalente Ergebnis (ist jedoch schneller, da die gesamte Filterverarbeitung vermieden wird) wie die Verwendung -filter box -resize 400x300. Außerdem werden aktuelle -filterEinstellungen vollständig ignoriert .

  • Beim Minimieren wird die Bildgröße geändert, indem einfach die Pixelfarben ersetzt werden, indem die jeweiligen eingegebenen Pixelfarben zusammen gemittelt werden.

  • Beim Vergrößern werden einfach die jeweiligen Eingabepixel für die erforderlichen zusätzlichen Pixel repliziert.

adaptive Größenänderung

-adaptive-resize 400x300unterstützt den Offset- Teil eines Geometrieparameters nicht (oder ignoriert ihn, falls festgelegt) und ignoriert die -gravityEinstellung, falls vorhanden.

Miniaturansicht

-thumbnailfunktioniert genauso wie -resize, mit ein paar Unterschieden:

  • Es ist auf Geschwindigkeit optimiert.

  • Außerdem werden eingebettete Farbprofile entfernt, um die Dateigröße der Miniaturansichten zu verringern.


Die folgende Antwort zeigt einige (illustrierte!) Beispiele der -resizeRichtlinie. Jede Abbildung zeigt ein anderes Ergebnis, abhängig von den "feinen Details" der genauen Größenänderungsmethode:

Kurt Pfeifle
quelle
4
Vielen Dank, das ist viel sinnvoller als die ImageMagick-Dokumentation.
Paul Brannan
Wenn Sie Beispielbilder hätten, wäre dies noch perfekter :-)
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功
@ KurtPfeifle: Zunächst einmal vielen Dank für die sehr informative Antwort. Bitte, können Sie ein gutes Buch oder eine Dokumentation als PDF für Imagemagick vorschlagen? Der beste Ansatz, den ich derzeit habe, ist das Abkratzen aller Seiten von Imagemagick, um die Lesezeit zu verkürzen, aber es sind viele Informationen (die meiner Meinung nach nicht immer beschreibend genug sind). Jede Hilfe wird sehr geschätzt.
Saurabheights
4

Wie von Ciro Santilli 新疆 改造 中心 六四 六四 法轮功 gesagt:

Wenn Sie Beispielbilder hätten, wäre dies noch perfekter :-)

-Größengröße

Google Play mit -resize (8,0 kB)

-Stichprobe

-Stichprobe (2,2 kB)

-Rahmen

-Rahmen (7,0 kB)

-adaptive-resize

Geben Sie hier die Bildbeschreibung ein (4,3 kB)

serv-inc
quelle