Mit dem Mogrify-Werkzeug von ImageMagick werden PNGs dunkler (wenn Sie nur versuchen, die Größe zu ändern).

785
Jeff Ward

Ich versuche, den einfachen Befehl zum Ändern der Bildgröße und zum Überschreiben der Originale zu verwenden:

mogrify -resize 80% * 

Meine Quellbilder sind semitransparente PNGs, die zufällig Graustufen sind. Die Größenänderung funktioniert zwar, macht aber die Bilder dunkler.

enter image description here

Früher funktionierte dies auf einer anderen Maschine (Ubuntu 12.04, mit ImageMagick 6.6.9-7 2014-03-06) und auf einer neueren Maschine (Ubuntu 14.04, mit ImageMagick 6.7.7-10 2014-03-06). Ab diesem Posting ist die defekte Version die neueste Version in den Ubuntu 14.04-Repos.

Da ImageMagick ein skriptfähiges Werkzeug ist, ist dies eine bedauerliche Regression, die von einem Komponententest hätte eingefangen werden müssen. Ich schalte meine geskripteten Image-Workflows ab.

Zu Ihrer Information - offenbar ist auch das Konvertierungswerkzeug betroffen.

2
Versuchen Sie, `-typ truecolorAlpha` hinzuzufügen ([hier überprüfen] (http://www.imagemagick.org/discourse-server/viewtopic.php?t=21436)) Hastur vor 9 Jahren 2
Ja, die `-type truecolorAlpha`-Option scheint auch den Fehler zu beheben. Jeff Ward vor 9 Jahren 0

2 Antworten auf die Frage

1
Hastur

Durch Hinzufügen von -type truecolorAlphakann dieses Problem gelöst werden.

Es ist möglich, eine Erklärung zu finden, die sich auf die Truecolor-PNG der Originaldatei und die unterschiedliche Palettengröße vor und nach der Größenänderung bezieht.

Im Wesentlichen handelt es sich um einen Fehler aufgrund einer falschen Erkennung eines iCCP-Profils aus PNG (Colortyp 6), der als sRGB erkannt wurde und in einer ähnlichen Situation auftreten kann.

0
Jeff Ward

Ich habe einen Blogbeitrag gefunden, der eine Problemumgehung enthält, indem das Format der Ausgabe angegeben wird. Für mich wollte ich semitransparente PNGs. Daher war es am besten, die -define png:format=png32Option hinzuzufügen :

mogrify -define png:format=png32 -resize 80% * 

(Das Blog schlägt vor, -define png:format=png24aber das scheint die Ausgabe von Alpha auf 1 Bit zu begrenzen.)