Fusionner deux images png avec transparence et conserver la transparence

Dupliquer possible:
Fusion de deux images en C # / .NET

J’ai deux images au format png et les deux ont une transparence définie. Je dois les fusionner dans une nouvelle image png, mais sans perdre la transparence du résultat. Pensez à la première image en tant qu’image principale et la seconde est utilisée pour append une superposition, telle qu’un indicateur d’ajout / modification / suppression. J’essaie de créer un petit utilitaire qui prend une image principale et un ensemble de superpositions, puis génère l’ensemble résultant des images de sortie qui les combinent.

Il semble y avoir beaucoup de réponses avec des solutions pour PHP mais rien pour C # /

Cela devrait marcher.

Bitmap source1; // your source images - assuming they're the same size Bitmap source2; var target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb); var graphics = Graphics.FromImage(target); graphics.CompositingMode = CompositingMode.SourceOver; // this is the default, but just to be clear graphics.DrawImage(source1, 0, 0); graphics.DrawImage(source2, 0, 0); target.Save("filename.png", ImageFormat.Png); 

Malheureusement, vous n’avez pas mentionné comment vous obtenez les pixels,

alors p-code:

 // The result will have its alpha chanell from "first", // the color channells from "second". assert (first.width = second.width) assert (first.height = second.height) for y in 0..height for x in 0..width RGBA col_first = first(x,y) RGBA col_second = second(x,y) result(x,y) = RGBA(col_second.r, col_second.g, col_second.b, col_first.a ))