如何显示一张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);
}
...全文
1497 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-01-22
  • 打赏
  • 举报
回复
纠正一下不是变成24位了,应该是ALPHA通道变成255了。。

16,175

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧