gpt4 book ai didi

qt - QImage在PNG中设置alpha,具有透明度

转载 作者:行者123 更新时间:2023-12-03 18:38:14 72 4
gpt4 key购买 nike

我正在尝试在另一个图像上绘制图像(并且该部分有效),但在绘制叠加图像之前,我想降低它的不透明度。这是我遇到麻烦的地方。我的叠加图像是 PNG,它们本身有透明区域,否则它们的内容是黑色的。在 Qt 中,我遍历每个像素,但无法确定像素是否透明——它告诉我每个像素都是黑色的,带有完整的 alpha。我试过检查像素颜色和 alpha,但我一定做错了。搜索并没有导致解决方案。这是我正在使用的小循环:

// Set Alpha
for (int x = 0; x < overlay.width(); x++)
{
for (int y = 0; y < overlay.height(); y++)
{
pixelColor = QColor(overlay.pixel(x,y));

if (pixelColor.alpha() == 255)
{
overlay.setPixel(x, y, QColor(0,0,0,200).rgba());
//qDebug() << "Not Skipped";
}
else
{
qDebug() << "Skipped";
}
}
}

QImage 说我的覆盖图像格式是 Format_ARGB32。有谁知道我做错了什么?根据 Qt 文档,我应该能够使用 alpha(),但它为每个像素提供 255。也许我弄错了颜色?

最佳答案

您的问题出在 QColor(QRgb) constructor :

Constructs a color with the value color. The alpha component is ignored and set to solid.



你有这个问题是因为 QImage::pixel(int,int)返回 QRgb .您应该使用 QImage::pixelColor(int,int)相反(如果可用,在 Qt 5.6 中引入),或使用 QRgb直接,像这样:
QRgb col = image.pixel(x,y);
if(qAlpha(col) == 255) {}

请注意,如果您想降低图像的不透明度,您可以随时 change the QPainter opacity .

关于qt - QImage在PNG中设置alpha,具有透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25021966/

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