http://www.imagemagick.org/script/command-line-options.php
Wichtig bei Verwendung von Crop:
z.B. -crop 100×100 bescheidet das Bild, aber:
Der Rest wird in Unterlayern abgelegt ([0] [1] etc.). Am Ende hat greift man dann meist auf das [0] zurück (darin liegt der Rest). Um das zu Unterbinden, verwende man:
-crop 100×100+0+0
Problem: Die default-Eigenschaften von 'composite' haben sich geändert (Version: 6.0.2 → 6.2.4)
In die meisten Skripte muss ich hinzufügen: composite: -compose over -matte
(genaugenommen gibt es jetzt 2 over: over-dst (default) und over-src)
Ausserdem ist die neuere Version ziemlich pingelig mit den Ebenen. Ich verwende intern immer das MIFF-Format.
Dabei wird das oft aus mehreren Bildern zusammengesetzt. Im Miff sind dann alle Ebenen einzeln gespeichert und beim Konverieren in andere Formate wird dann nur die oberste (?) Ebene genommen.
Lösung: Beim Erstellen der Miffs die Ebenen verwerfen. z.B. convert Bild1.jpg Bild2.jpg -flatten +repage temp.miff
(also Bild abflachen!)
ODER: Bei der Weiterberechnung explizit die Ebene wählen: z.B. convert ergebnis.miff[0] ergebnis.jpg
Zeilenumbrüche:
Seit Version 6.2.4 funktionieren Zeilenumbruech (\n) innerhalb von -draw nicht mehr.
Stattdessen -annotate verwenden!
http://www.imagemagick.org/Usage/draw/#special
Also statt: -draw „text 19,320 'ich bin \nhier'“ –> -annotate +19+320 „ich bin \nhier“ (um \n in php zu erzeugen nach wie vor: \\\\n).
-annotate x-rotatexy-rotate{+-}x{+-}y text
This is a convenience option for annotating your image with text. For more precise control over your text annotations, use -draw.
X-rotate and Y-rotate give the angle of the text and x and y are offsets that give the location of the text relative to the upper left corner of the image.
tmpformat="miff" addition="-depth 8 -define quantum:format=floating-point" ( +repage : siehe weiter unten)
Hallo, kann mir jemand sagen ob ich die beiden ImageMagick-Variablen „MAGICK_TMPDIR“ und „TMPDIR“ für mich local setzen kann? Oder ob die nur für den gesamten Server gesetzt werden können?
# Problem gelöst, vielleicht kanns jemand auch noch gebrauchen:
Durch temporäres setzen der Umgebungsvariablen für mein Skript lässt sich jetzt der Ordner genau angeben, der für die Umrechnung der Bilder durch ImageMagick verwendet wird.
<? putenv("MAGICK_TMPDIR=/beliebigesVerzeichnis/tmp"); putenv("TMP=/beliebigesVerzeichnis/tmp"); putenv("TMPDIR=/beliebigesVerzeichnis/tmp"); ?>
Bei set-02040206 ist alles korrigiert…. (-composite jetzt bei convert nötig !!!)
Alpha-Kanal-Maske über bestehendes Bild kopieren:
composite -compose src-over -geometry +0+0 -quality 86 Maske.jpg Bild.jpg ergebnis.jpg
Überflüssig:
-matte -channel Alpha -type TrueColorMatte
-crop macht zwar, was es soll, verwirft aber die 'Reste' nicht (sondern speichert sie als neue Ebenen, wenn möglich, z.B. bei MIFF).
Wichtig: Bei -crop müssen die Parameter +0+0 unbedingt angegeben werden! (sonst verschiebt er den Bildausschnitt nur!)
Lösung +repage Löscht alle Informationen über die Grösse. (remove/reset the virtual canvas meta-data from the images.)
Auch keine Lösung: -extract width (funzt aber auch nicht so, wie es früher mal war) -extract widthxheightgetrennte_befehle..._tag_imagemagick_im_convert_identify_composite
Photoshop-Datei mit Ebenen erzeugen:
convert \( -page +0+0 -label "optional_label" 0006.jpg[0] -background none -mosaic -set colorspace RGB \) \( -page +0+0 -compose darken -label "optional_label2" 0007.jpg[0] -background none -mosaic -set colorspace RGB \) \( -clone 0--1 -background none -mosaic \) -alpha Off -reverse -compress JPEG "out.psd"
Quelle1)
I need to calculate the length when rendered of a lot of strings using a custom font.
Can you use label: and let ImageMagick calculate the width needed for you?
convert -font "Arial" -pointsize 64 label:"this is the text" out.png
identify out.png
out.png PNG 396x73 396x73+0+0 8-bit sRGB 256c 2.57KB 0.000u 0:00.000
or, more simply:
convert -font "Arial" -pointsize 64 label:"this is the text" -format %w info: 396
or, as Eric suggested:
convert -font "Arial" -pointsize 64 label:"this is the text" -format %w +identify result.png 396
Or, if you want to use annotate, you can make a larger canvas and trim it, like this:
convert -gravity west xc:white[1000x1000] -font "arial" -pointsize 32 -annotate 0 "this is the text" -trim -format %w info: 197