Salut tout le monde,
Je développe actuellement une application en C# réalisant du watermarking avec des chaînes de caractères ou des PNG. La superposition marche très bien dans les deux cas mais j'ai cependant un petit souci. J'aimerais pouvoir sélectionner une couleur différente pour le PNG (qui est monochrome, de base noir & alpha seulement). J'utilise le code ci-dessous pour changer de couleur :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private Image replaceColor(Color clrSelected, Color clrToReplace) { Bitmap bitmap = new Bitmap(imgPNG); for (int x = 0; x < bitmap.Width; x++) { for (int y = 0; y < bitmap.Height; y++) { if (GetKnownColorName(bitmap.GetPixel(x, y).R, bitmap.GetPixel(x, y).G, bitmap.GetPixel(x, y).B) == clrToReplace) { bitmap.SetPixel(x, y, clrSelected); } } } Image imgTemp = Image.FromHbitmap(bitmap.GetHbitmap()); return imgTemp; }
Seulement voilà, je pense que lors de la conversion de Bitmap à Image le canal alpha ne doit pas être conservé, la transparence disparaît et je me retrouve avec un beau rectable (qui est quand même de la couleur demandé)
Ma question est la suivante : quelle est la meilleure manière de procéder pour changer une couleur d'un PNG sans toucher à sa transparence?
Merci pour vos éventuelles suggestions.
Partager