Ich versuche, eine Bitmap-Klasse mit Transparenz als PNG-Datei mit Transparenz zu speichern. Ich habe kein Glück.
das mache ich gerade
Ich habe auch versucht, die Datei mit einem Filestream zu speichern, und das machte keinen Unterschied.
Wenn das Bild in einer Bildbox ist, existiert die Transparenz, aber wenn ich es speichere, bekomme ich nur einen schwarzen Hintergrund.
Ich möchte wirklich keinen Code von Drittanbietern verwenden, sie haben einen Weg gefunden, es zu tun, ich möchte auch.
danke.
Ich nahm an, dass der FilterIndex eines Dialogfelds bei 0 gestartet wurde, aber tatsächlich bei 1 beginnt. Daher wurden meine Bilder als Gifs mit Alpha-Transparenz gespeichert, und GIF unterstützt keine Alpha-Transparenz. Also mein Problem war eigentlich mit dem Dialogfeld.
Sind Sie sicher, dass das Pixelformat der Bitmap System.Drawing.Imaging.PixelFormat.Format32bppArgb ist? Ich bin gerade über diese Frage gestolpert, weil ich das gleiche Problem hatte, aber es war, weil ich ein Bild geladen hatte, das keine Alpha-Komponente zu seinem Pixelformat hatte. Ich habe
gemacht %Vor%und es hat das PNG richtig mit der Alpha-Komponente gespeichert.
Wenn Sie MakeTransparent () verwenden, müssen Sie außerdem sicherstellen, dass die Farbe, die Sie transparent machen, in Ihrem Bild vorhanden ist.
Schon eine Weile her, seit ich Bildbearbeitung / -speicherung gemacht habe, aber wenn ich mich recht erinnere, sind PNGs anders als die meisten. Ich denke, Sie müssen einen tatsächlichen FileStream verwenden.
EDIT: Ah, fand ein Beispiel hier
%Vor%EDIT2: Nach mehr Recherche dazu denke ich, dass der Zwischenschritt nur unter bestimmten Umständen erforderlich ist.
Es ist auch möglich, dass Sie, weil Sie "MakeTransparent" verwenden, ein indiziertes Alpha abfangen, aber versuchen, basierend auf dem tatsächlichen Alpha-Wert jedes Pixels zu speichern. Sie könnten versuchen, die Alpha-Werte des Bildes tatsächlich einzustellen.
Haben Sie versucht, die Bitmap.MakeTransparent () -Methode zu verwenden?
Ich wollte nur alle daran erinnern, dass MakeTransparent, wie meine vielen Personen hier vorgeschlagen haben, nur die spezifische Farbe transparent macht . Der Alphakanal des Argb-Bildes wird nicht berücksichtigt. Ein Pixel mit einem Alpha-Wert von 100, zum Beispiel, wenn es nicht mit der Farbe übereinstimmt, die MakeTransparent zur Verfügung gestellt wird, hat keine teilweise Transparenz.
Obwohl die Frage sehr alt ist, aber hier funktioniert der Code für mich.
%Vor%