Die Verwendung Von Grafiken.DrawImage() Zeichnen, Bild Transparenz/Alpha-Kanal

Ich bin das kopieren von Bildern. (Meine eigentliche code ist die Bildgröße zu ändern, aber das ist nicht relevant für meine Frage.) Mein code sieht ungefähr so aus.

Image src = ...

using (Image dest = new Bitmap(width, height))
{
    Graphics graph = Graphics.FromImage(dest);
    graph.InterpolationMode = InterpolationMode.HighQualityBicubic;
    graph.DrawImage(src, 0, 0, width, height);
    dest.Save(filename, saveFormat);
}

Scheint dies gut zu funktionieren, es sei denn src geladen wird ein Bild mit Transparenzen (wie GIF) oder einen alpha-Kanal (PNG).

Wie bekomme ich DrawImage() transfer Transparenzen/alpha-Kanal, um das neue Bild, und dann halten kann, wenn ich die Datei speichern?

Die Frage ist, was ist der Wert von saveFormat variable? Es sollte PixelFormat.Format32bppArgb (oder ein anderes format mit alpha-Kanal abgewickelt). Versuchen Sie auch: using (Image dest = new Bitmap(width, height, PixelFormat.Format32bppArgb)).
Dies scheint zu funktionieren für alpha-Kanäle, aber nicht für GIF-Transparenzen. saveFormat variieren je nach format der Eingabe-Datei. Wenn der input-Datei keine Unterstützung für alpha-Kanal, dann ist es sicher davon ausgehen, dass das Bild nicht enthalten alpha-Kanal Pixel.
Also, was ist der Wert von saveFormat für GIF-Dateien dann:)?
In diesem Fall ist es ImageFormat.Gif.
Vielen Dank für eine schnelle Antwort. In der Zwischenzeit habe ich ein Artikel über GIF-Transparenz. Schauen Sie sich an: support.microsoft.com/kb/319061. Ich nehme an, dass im Grunde die Sie gerade haben, um das image der palette und legen Sie die Farbe, gespeichert in dem ersten index auf einem transparent.

InformationsquelleAutor Jonathan Wood | 2012-05-18

Schreibe einen Kommentar