繁体   English   中英

Qt:QImage始终将透明色保存为黑色

[英]Qt: QImage always saves transparent color as black

如何在没有Qt使透明颜色为黑色的情况下将具有透明度的文件保存到JPEG文件中? 我知道JPEG不支持alpha,黑色可能只是alpha的默认“0”值,但黑色是一种可怕的默认颜色。

看起来这应该是一个简单的操作,但是当我保存为JPEG时,我尝试过的所有掩码和alpha函数都会被忽略。

例如:

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

在保存为JPEG之前,我尝试用白色填充图像,在保存之前将图像转换为ARGB32(带有8位alpha通道),甚至尝试了可笑的缓慢的东西:

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.

我会尝试这样的事情(即,加载图像,创建相同大小的另一个图像,绘制背景,绘制图像):

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");

Jpeg不支持透明度

如果你想使用Alpha Chanel(透明),你应该保存* .png * .bmp格式的图像

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM