QImage和透明度

时间:2014-04-11 03:46:07

标签: c++ qt

使用Qt加载PNG图像时遇到问题,尤其是QImage类。

实际上,虽然图像包含透明区域,但我的代码没有检测到此图像的透明像素(根据我得到的结果,它完全不透明,而事实并非如此)。

首先,我在Stack Overflow上阅读了一些与此主题相关的问题,我尝试了几个东西,例如在我加载图像时显示image.convertToFormat(QImage :: Format_ARGB32),但它仍然不起作用。谁能帮我 ?我想我的代码需要第二双眼睛......

void ImageManager::detectTransparentPixels() {

    QImage image("imqage.png");

    image.convertToFormat(QImage::Format_ARGB32);

    int opaque = 0;

    int transparent = 0;

    for (int x = 0 ; x < width ; x++) {

        for (int y = 0 ; y < height ; y++) {

            QRgb currentPixel = (image.pixel(x, y));

            if (qAlpha(currentPixel) == 0) {

                transparent++;

            } else {

                opaque++;

            }

        }

    }

    std::cout << "Opaque pixels : " << opaque << std::endl;

    std::cout << "Transparent pixels : " << transparent << std::endl;

}

提前谢谢你,祝你有愉快的一天......

0 个答案:

没有答案