JPG mit vordefinierten Farbcodes in PNG konvertieren?
Ich habe einige Karten, basierend auf 66 Farben, die ich leider vor ein paar Monaten in JPG gespeichert habe.
Ich habe festgestellt, dass ich in PNG konvertieren kann und es auf 66 Farben setzen kann, ABER es gibt sowieso eine Möglichkeit, diese 66 Farben vorab zu definieren, sodass beispielsweise die Farben in der Nähe von # 888888 in # 888888 und nicht in 878787 und konvertiert werden 878887.
Ein Problem ist auch, dass die Karten nicht alle 66 Farben enthalten (normalerweise um die 30), so dass ich jetzt möglicherweise 4 verschiedene Arten von Weiß bekomme. (Deshalb brauche ich diese Lösung)
ist das mit imagemagick überhaupt möglich?
Antworten
Sie können aus den 66 gewünschten Farben ein "Farbfeld " mit 66 x 1 Pixel erstellen, indem Sie eines Ihrer ursprünglichen PNG-Bilder aufnehmen und die einzigartigen Farben wie folgt extrahieren:
magick original.png -unique-colors swatch.png
Dann können Sie es folgendermaßen anwenden:
magick unhappy.jpg -remap swatch.png result.png
Weitere Details hier .
Hier ist ein konkretes Beispiel. Hier ist unsere Karte:
Erstellen Sie zunächst ein Farbfeld der 5 Farben, die in unserem Ausgabebild angezeigt werden sollen:
magick xc:"rgb(10,100,140)" xc:"rgb(240,190,120)" xc:"rgb(70,130,30)" xc:"rgb(220,230,230)" xc:"rgb(40,80,50)" +append swatch.png
Ordnen Sie nun alle Farben im Original den 5 Farben im Farbfeld zu:
magick map.jpg +dither -remap swatch.png result.png
Alternativ können Sie ImageMagick die besten Farben für das Farbfeld wie folgt auswählen lassen :
magick map.jpg -colors 7 -unique-colors swatch.png
Und ordnen Sie es wie zuvor neu zu, verwenden Sie jedoch die von ImageMagick ausgewählten Farben :
magick map.jpg +dither -remap swatch.png result.png
Beachten Sie, dass Sie Hex-Codes ( oder HSL- oder Lab-Farben ) trotzdem verwenden können:
convert xc:"#0a658c" xc:"#f0be78" xc:"#46821e" xc:"#dce6e6" xc:"#285032" +append swatch.png
Beachten Sie, dass die obigen Befehle ImageMagick v7 voraussetzen. Wenn Sie verpflichtet sind, die alte v6-Syntax zu verwenden, ersetzen Sie diese magickdurch convert.