问题描述
|
我想知道我加载的“ 0”是否包含一个Alpha通道。我已经知道ѭ1可以告诉我我使用的图像格式是否支持alpha通道,但是有没有办法知道加载的图像中是否实际使用了该格式?
解决方法
这里有我的代码片段,用于检查是否确实使用了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()方法。
, 如果您将QImage
加载为具有Alpha通道的格式,则QImage
具有Alpha通道。
如果要检查带有alpha通道的图像中是否有任何像素实际上将任何像素设置为不透明以外的颜色,则可以尝试使用QImage::createAlphaMask()
生成alpha蒙版并检查其像素值之类的方法。