Convertir jpg en png avec des codes couleurs prédéfinis?
J'ai des cartes, basées sur 66 couleurs, que j'ai malheureusement sauvegardées au format jpg il y a quelques mois.
J'ai découvert que je peux convertir en png, et le définir sur 66 couleurs, MAIS, est-il quand même là pour prédéfinir ces 66 couleurs, donc par exemple les couleurs proches de # 888888 seront converties en # 888888 et non en 878787 et 878887.
Un problème est également que les cartes ne contiennent pas les 66 couleurs (généralement environ 30), donc maintenant je pourrais obtenir 4 types de blancs différents. (c'est pourquoi j'ai besoin de cette solution)
est-ce même possible avec imagemagick?
Réponses
Vous pouvez créer un "échantillon" de 66 x 1 pixel des 66 couleurs que vous souhaitez en prenant l'une de vos images PNG originales et en extrayant les couleurs uniques comme ceci:
magick original.png -unique-colors swatch.png
Ensuite, vous pouvez l'appliquer comme ceci:
magick unhappy.jpg -remap swatch.png result.png
Plus de détails ici .
Voici un exemple concret. Voici notre carte:

Tout d'abord, faites un échantillon des 5 couleurs que nous voulons voir apparaître dans notre image de sortie:
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

Maintenant, remappez toutes les couleurs de l'original aux 5 couleurs de l'échantillon:
magick map.jpg +dither -remap swatch.png result.png

Alternativement, nous pourrions laisser ImageMagick choisir les meilleures couleurs pour l'échantillon comme ceci:
magick map.jpg -colors 7 -unique-colors swatch.png

Et remappez exactement comme avant mais en utilisant les couleurs choisies par ImageMagick :
magick map.jpg +dither -remap swatch.png result.png

Notez que vous pouvez utiliser les codes hexadécimaux ( ou HSL, ou couleurs Lab ) de la même manière:
convert xc:"#0a658c" xc:"#f0be78" xc:"#46821e" xc:"#dce6e6" xc:"#285032" +append swatch.png
Notez que les commandes ci-dessus supposent ImageMagick v7. Si vous êtes obligé d'utiliser l'ancienne syntaxe v6, remplacez-la magick
par convert
.