Qt: QImage speichert immer die transparente Farbe als schwarz
Wie Speichere ich eine Datei mit Transparenz, um eine JPEG-Datei ohne Qt Herstellung der transparenten Farbe schwarz?
Ich weiß, JPEG unterstützt keine alpha, und der schwarze ist wahrscheinlich nur ein Standard - "0" - Wert für alpha, aber schwarz ist eine schreckliche Standard-Farbe.
Wie es scheint, dies sollte eine einfache Bedienung, aber alle von der Maske und alpha-Funktionen, die ich ausprobiert habe werden ignoriert, beim speichern als JPEG.
Beispiel:
image->load("someFile.png"); //Has transparent background or alpha channel
image->save("somefile.jpg", "JPG"); //Transparent color is black
Habe ich versucht, Füll das Bild mit der weißen vor dem speichern als JPEG, Konvertierung des Bildes in ARGB32 (mit 8-bit alpha-Kanal), bevor Sie Sie speichern, und sogar versucht lächerlich langsamen Sachen wie:
QImage image2 = image1->convertToFormat(QImage::Format_ARGB32);
image2.setAlphaChannel(image1->alphaChannel());
image2.save(fileURI, "JPG", this->jpgQuality; //Still black!
See: http://67.207.149.83/qt_black_transparent.png for a visual.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde versuchen, so etwas wie dieses (D. H., laden Sie das Bild, erstellen Sie ein anderes Bild von der gleichen Größe, Farbe hintergrund, das Bild zu zeichnen):
bits()
die roh-Daten, Durchlaufen, prüfen Sie, obqAlpha()
einer pixal unter 255, mischen Sie die Farbe mit weiß.Jpeg keine Transparenz unterstützt
True, wenn Sie möchten verwenden von Alpha-Chanel (Transparent) speichern Sie die imge in *.png *.bmp-in den Formaten