Je veux convertir une image png transparente en niveaux de gris sans perdre sa transparence.Comment convertir une image PNG en niveaux de gris et sans perdre la transparence C#
Le problème est que l'algorithme que j'utilise est en convertissant la partie transparente en noir, dont une image avec un caractère noir ne serait pas affichée. Pour te donner une idée.
Heres l'image d'origine:
Regardez ce qui se passe quand je passe à travers l'algorithme.
L'algorithme:
public static void ToWhiteBlack(Bitmap original)
{
try
{
for (var i = 0; i < original.Width; i++)
{
for (var j = 0; j < original.Height; j++)
{
var originalColor = original.GetPixel(i, j);
var grayScale = (int) ((originalColor.R*0.3) + (originalColor.G*0.59) + (originalColor.B*0.11));
var corEmEscalaDeCinza = Color.FromArgb(grayScale, grayScale, grayScale);
original.SetPixel(i, j, corEmEscalaDeCinza);
}
}
}
catch
{
}
}
Vous ignorez la valeur alpha qui détermine la transparence. Passez le simplement à la nouvelle couleur. – juharr
Comment feriez-vous cela? – joab
Utilisez la surcharge FromArgb qui prend quatre arguments. –