7

Qtで透明色を黒にせずに、透明度のあるファイルをJPEGファイルに保存するにはどうすればよいですか?JPEGがアルファをサポートしていないことは知っています。黒はおそらくアルファのデフォルトの「0」値ですが、黒は恐ろしいデフォルトの色です。

これは簡単な操作のようですが、JPEGとして保存する場合、私が試したマスク関数とアルファ関数はすべて無視されます。

例えば:

image->load("someFile.png"); // Has transparent background or alpha channel
image->save("somefile.jpg", "JPG"); // Transparent color is black

JPEGとして保存する前に画像を白で塗りつぶし、保存する前に画像をARGB32(8ビットアルファチャネル付き)に変換してみました。さらに、次のような途方もなく遅いものも試しました。

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.
4

3 に答える 3

11

私は次のようなことを試してみます (つまり、画像をロードし、同じサイズの別の画像を作成し、背景をペイントし、画像をペイントします):

QImage image1("someFile.png"); 
QImage image2(image1.size());
image2.fill(QColor(Qt::white).rgb());
QPainter painter(&image2);
painter.drawImage(0, 0, image1);
image2.save("somefile.jpg", "JPG");
于 2009-10-11T07:58:26.837 に答える
-2

アルファ シャネル (透明) を使用する場合は、画像を *.png *.bmp 形式で保存する必要があります。

于 2010-06-28T01:39:49.707 に答える
-2

JPEG は透明度をサポートしていません

于 2009-10-11T02:08:50.537 に答える