Ho un'immagine PNG inviata da un DrawingView
in Android a un servizio WCF. L'immagine viene inviata come 32 bit e ha uno sfondo trasparente. Voglio sostituire lo sfondo di colore trasparente (per mancanza di una parola migliore) con il bianco. Finora il mio codice assomiglia a questo:Sostituzione dello sfondo trasparente con il colore bianco nelle immagini PNG
// Converting image to Bitmap object
Bitmap i = new Bitmap(new MemoryStream(Convert.FromBase64String(image)));
// The image that is send from the tablet is 1280x692
// So we need to crop it
Rectangle cropRect = new Rectangle(640, 0, 640, 692);
//HERE
Bitmap target = i.Clone(cropRect, i.PixelFormat);
target.Save(string.Format("c:\\images\\{0}.png", randomFileName()),
System.Drawing.Imaging.ImageFormat.Png);
Quanto sopra funziona bene, tranne che le immagini hanno sfondo trasparente. Ho notato che in Paint.NET puoi semplicemente impostare il formato PNG su 8 bit e impostare lo sfondo su bianco. Tuttavia, quando ho provato a utilizzare:
System.Drawing.Imaging.PixelFormat.Format8bppIndexed
tutto quello che ho ottenuto era un'immagine completamente nera.
Q: Come sostituire lo sfondo trasparente con il bianco in png?
PS. L'immagine è in scala di grigi.
C'è un motivo per cui hai provato il formato indicizzato? Hai provato uno dei 24 formati bpp? –
Dovresti essere in grado di creare una bitmap bianca e disegnare l'immagine su di essa, quindi salvare come qualsiasi .. – TaW
@NicoSchertler Hmm .. Ho provato la maggior parte di loro, non penso tutto. Format24bppRgb dà lo stesso risultato. –