如何显示一张32位的透明BMP图片?
「已注销」 2018-01-22 04:11:00 发现32位的BMP用QImage.load加载后就变成24位了,然后就算用convertToFormat转换也还是24位的,这样alpha通道就没了。有没有人知道问题在哪?目前项目只能用BMP。。
大概代码如下:
QImage* img = new QImage;
if(img->load(path) ) {
*img = img->convertToFormat(QImage::Format_RGBA8888_Premultiplied,Qt::NoFormatConversion);
int imgWidth = img->width();
int imgHeight =img->height();
//透明颜色
QRgb bmpBack = 0xFFFFFFFF;//(255,255,255,255);
QRgb bmpBackA = 0xFFFFFF00;//(255,255,255,0);
for(int i=0;i< bmpWidth;++i)
{
for(int j=0;j<bmpHeight;++j)
{
//如果背景色等于 Color(255,255,255,255),则设置为透明色 Color(255,255,255,0)
if(img->pixel(i,j)==bmpBack)
{
img->setPixel(i,j,bmpBackA);
}
}
}
pixmap = QPixmap::fromImage(*img);
label->setPixmap(pixmap);
}