c# - Bitmap.Sparen Sie Folie nicht speichern in png
Ich versuche zu speichern eine Bitmap-Klasse, die Transparenz als png-Datei mit Transparenz.
Ich habe kein Glück.
Die bitmap Transparenz, es funktioniert einfach nicht speichern mit Transparenz.
dies ist, was ich Tue
bitmap-setup
Bitmap ret = new Bitmap(bWidth, bHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
saveing
ret.Save(filename, ImageFormat.Png);
Ich habe auch versucht, speichern Sie die Datei mit einem filestream, und dass kein Unterschied gemacht.
Wenn das Bild in einem Bildfeld der Folie vorhanden ist, aber wenn ich speichern ich bekomme ich nur einen schwarzen hintergrund.
Ich wirklich nicht wollen, zu verwenden 3rd-party-code, fanden Sie einen Weg, es zu tun, ich möchte auch.
Dank.
- Wie sind Sie mit der überprüfung der Transparenz des Bildes? Wenn Sie sind auf der Suche Sie in Lack, es keine Transparenz unterstützt.
- Ich bin mit windows XP 's" Preview " option und GIMP
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie sicher, dass das Pixelformat der Bitmap System.Zeichnung.Imaging.PixelFormat.Format32bppArgb? Ich habe gerade stolperte über diese Frage, denn ich hatte das gleiche problem, aber es war, weil ich laden Sie ein Bild, das keine alpha-Komponente, um das pixel-format. Ich habe
und es richtig gespeichert, die PNG-Datei mit alpha-Komponente.
Auch, wenn Sie MakeTransparent() sicher sein, dass die Farbe, die Sie machen transparent, existiert in Ihrem Bild.
Haben Sie versucht, mit Hilfe einer Bitmap.MakeTransparent () - Methode?
Schon eine Weile, da ich getan habe, Bild Bearbeiten/speichern, aber wenn ich mich Recht erinnere PNGs sind anders als die meisten. Ich denke, dass Sie eine tatsächliche FileStream.
EDIT: Ah, gefunden, ein Beispiel hier
EDIT2: Nach mehr Forschung auf diesem ich denke, der Zwischenschritt ist nur unter bestimmten Umständen erforderlich.
Es ist auch möglich, dass, weil man "MakeTransparent" fängt es auch eine indizierte alpha, aber zu versuchen, zu retten, basierend auf der aktuellen alpha-Wert für jedes pixel. Sie könnten versuchen, tatsächlich die Einstellung der alpha-Werte des Bildes.
Der Grund dafür ist, dass die
Bitmap
Klasse funktioniert nicht mit Transparenz.Müssen Sie gegossen
Bitmap
zuImage
.Image
ist nur eine abstrakte Klasse, und dieBitmap
ist eine Implementierung vonImage
dass nicht Transparenz unterstützen.Ich wollte nur alle daran erinnern, dass MakeTransparent, als vorgeschlagen wurde, meinen viele Menschen hier, macht nur die bestimmte Farbe transparent. Es berücksichtigt nicht den Alpha-Kanal der argb-Bild. So ein pixel mit einem alpha-Wert von 100, zum Beispiel, wenn es nicht mit der Farbe zur Verfügung gestellt MakeTransparent, wird keine teilweise Transparenz.
Speichern als PNG BENÖTIGT seekable stream wie FileStream MemoryStream oder. Wenn Sie es speichern in eine der es und erhalten Sie von dort wird es noe GDI+ exception oder ähnliches. Hoffe, das hilft.
Portable Network Graphhics(.das png-Format unterstützt Transparenz-Feld, so dass beim speichern der Bild-Bild-format ImageFormat.Png.
Also, wenn das speichern in anderen Formaten wie Jpeg... machen verlieren die Transparenz. Hoffe, es hilft.
Obwohl die Frage ist sehr alt, aber immer noch hier ist der code für mich arbeiten.
Bin ich davon ausgegangen, dass die FilterIndex-eine dialog-box bei 0 angefangen...aber es ist eigentlich bei 1 beginnt, also meine Bilder wurden gespeichert als GIF mit alpha-Transparenz und gif keine alpha-Transparenz unterstützen. Also mein problem war eigentlich mit dem Dialogfeld.