gpt4 book ai didi

c++ - Qt:QImage总是将透明色保存为黑色

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:06 57 4
gpt4 key购买 nike

如何在 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 channel ),甚至尝试过慢得离谱的东西,例如:

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

关于c++ - Qt:QImage总是将透明色保存为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1549634/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com