检查QImage是否具有Alpha通道

时间:2011-05-27 20:18:24

标签: qt

我想知道我加载的QImage是否包含Alpha通道。我已经知道QImage::hasAlphaChannel()可以告诉我我使用的图像格式是否支持alpha通道,但有没有办法知道它是否实际用于加载的图像中?

2 个答案:

答案 0 :(得分:3)

这里有我的片段,用于检查是否真的使用了alpha。当图像在ARGB32时,它很有用。

bool useAlpha = false;
const uchar* pixelData = image.bits();
int bytes = image.byteCount();

for (const QRgb* pixel = reinterpret_cast<const QRgb*>(pixelData); bytes > 0; pixel++, bytes -= sizeof(QRgb)) {
    if (qAlpha(*pixel) != UCHAR_MAX) {
        useAlpha = true;
        break;
    }
}

还要记住有format()方法。

答案 1 :(得分:1)

如果您加载QImage的格式为alpha通道,则QImage会有Alpha通道。

如果您要检查带有Alpha通道的图像中的任何像素是否实际上将任何像素设置为不透明以外的其他像素,您可以尝试使用QImage::createAlphaMask()生成alpha蒙版并检查其像素值