使用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;
}
提前谢谢你,祝你有愉快的一天......