Je travaille avec Bitmap C# et je me demande comment convertir une image png couleur à une seule couleur. Je veux que toutes les couleurs visibles dans l'image deviennent blanches. Les parties qui sont transparentes doivent rester transparentes. Je vais montrer ces agains sur un fond gris.Convertir PNG transparent en couleur à une seule couleur
Répondre
Les autres réponses ont été utiles et m'ont permis de partir, merci beaucoup. Je ne pouvais pas les faire travailler, je ne sais pas pourquoi. Mais j'ai également découvert que je voulais conserver la valeur alpha originale des pixels, rendant les bords lisses. C'est ce que j'ai trouvé.
for (int x = 0; x < bitmap.Width; x++)
{
for (int y = 0; y < bitmap.Height; y++)
{
Color bitColor = bitmap.GetPixel(x, y);
//Sets all the pixels to white but with the original alpha value
bitmap.SetPixel(x, y, Color.FromArgb(bitColor.A, 255, 255, 255));
}
}
Voici une copie d'écran du résultat magnifié quelques fois (d'origine sur le dessus): alt text http://codeodyssey.se/upload/white-transparent.png
Fonctionne très bien merci! – CareTaker22
essayer le code suivant:
void Test()
{
Bitmap bmp = new Bitmap(50, 50);//you will load it from file or resource
Color c = Color.Green;//transparent color
//loop height and width.
// YOU MAY HAVE TO CONVERT IT TO Height X VerticalResolution and
// Width X HorizontalResolution
for (int i = 0; i < bmp.Height; i++)
{
for (int j = 0; j < bmp.Width; j++)
{
var p = bmp.GetPixel(j, i);//get pixle at point
//if pixle color not equals transparent
if(!c.Equals(Color.FromArgb(p.ToArgb())))
{
//set it to white
bmp.SetPixel(j,i,Color.White);
}
}
}
}
PS: ce n'est pas testé et en aucune façon optimisée
Si l'image ne pas utiliser le canal alpha pour la transparence alors ce qui suit fera:
Bitmap image;
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
if (image.GetPixel(x, y) != Color.Transparent)
{
image.SetPixel(x, y, Color.White);
}
}
}
SetPixel
est à peu près la façon la plus lente possible de le faire. Vous pouvez utiliser un ColorMatrix
à la place:
var newImage = new Bitmap(original.Width, original.Height,
original.PixelFormat);
using (var g = Graphics.FromImage(newImage)) {
var matrix = new ColorMatrix(new[] {
new float[] { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f },
new float[] { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f },
new float[] { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f },
new float[] { 0.0f, 0.0f, 0.0f, 1.0f, 0.0f },
new float[] { 1.0f, 1.0f, 1.0f, 0.0f, 1.0f }
});
var attributes = new ImageAttributes();
attributes.SetColorMatrix(matrix);
g.DrawImage(original,
new Rectangle(0, 0, original.Width, original.Height),
0, 0, original.Width, original.Height,
GraphicsUnit.Pixel, attributes);
}
Certainement plus élégant, avec l'avantage supplémentaire d'exiger que l'on apprenne un nouvel espace colorimétrique, un nouveau concept de manipulation des couleurs, et d'utiliser ces nouvelles connaissances pour comprendre ce que vous venez de faire. :) J'aime ça! –
PS: Votre syntaxe C# est correcte, tant que 'using System.Drawing;' et 'using System.Drawing.Imaging;' sont en place. –
- 1. Dégradé de transparent à couleur en CSS
- 2. Couleur d'accent transparent
- 3. convertir l'image couleur en couleur unique as3
- 4. Python: PIL remplacer une seule couleur RGBA
- 5. Créer un pinceau personnalisé avec Png (transparent) Image et une couleur d'arrière-plan
- 6. Le png transparent ne montre pas l'image de bg juste la couleur bg en html
- 7. Comment changer la couleur noire de fond en transparent?
- 8. smartgwt - Rendre l'arrière-plan transparent/sans couleur
- 9. Convertir la chaîne en couleur en C#
- 10. Remplacer une seule couleur dans PIL?
- 11. Ruby: Trouver PNG non transparent et convertir en JPG
- 12. Convertir la couleur RVB à OLE_Color
- 13. Comment convertir la texture D3DFMT_A8 en couleur?
- 14. Comment convertir une espace couleur avec .NET?
- 15. Rendre une couleur spécifique dans le bitmap transparent
- 16. Création d'un coin transparent PNG dans .net
- 17. css3 transparent png border-image
- 18. donné une couleur et alpha, quelle couleur et alpha à ajouter pour créer une couleur désirée?
- 19. Comment isoler une seule couleur dans une image
- 20. Comment isoler une seule couleur sur une image avec PHP?
- 21. Conversion couleur uint à ARVB hexadécimale pour la couleur kml
- 22. Comment puis-je convertir une image JPEG en une image PNG avec un arrière-plan transparent?
- 23. Comment rendre un formulaire transparent en fonction d'une image PNG?
- 24. Générer PNG transparent C#
- 25. C# DataGridView Texte en couleur d'une seule ligne
- 26. Segmentcontrol Couleur en charge?
- 27. png transparent en utilisant WPF dans VS2008
- 28. En cliquant sur un .png transparent
- 29. Comment remplacer une couleur qui n'est pas une couleur spécifique à l'aide de PerlMagick?
- 30. RVB Couleur Transparence
double possible de [GDI +: Définir tous les pixels de couleur donnée tout en conservant la valeur alpha existante] (http://stackoverflow.com/questions/2510013/gdi-set-all- pixel-to-given-color-while-retaining-existing-alpha-value) –
Y a-t-il quelque chose que je pourrais ajouter à ma réponse, puisque vous n'avez accepté aucune réponse? – Cloudanger
Salut et désolé pour la réponse tardive. J'ai essayé le code maintenant et je ne peux pas le faire fonctionner. Tous mes pixels deviennent blancs et cela ne laisse pas les pixels transparents des png intacts. – jesperlind