Qt 如何使用 QImage 設置指定的顏色為透明色?
需求背景:使用華大身份證讀卡器模塊讀取身份證信息,通過模塊讀取的圖片為 *.BMP 格式,無透明色,故繪制到身份證上無法美觀的顯示。
通過查詢身份證拍攝要求,得知不得穿白色的領子拍攝,采用白底背景。
通過工具得知圖片底色顏色值 QColor(254,254,254,255)。
故只需遍歷圖片把顏色值等於圖片底色的值設置為 QColor(254,254,254,0)。
void IDCard::Bmp2Png(QImage &bmp,QString &path)
{
//BMP顏色格式轉換成RGBA顏色格式
bmp = bmp.convertToFormat(QImage::Format_RGBA8888_Premultiplied,Qt::NoFormatConversion);
int bmpWidth = bmp.width();
int bmpHeight = bmp.height();
//透明顏色
QColor bmpBack(254,254,254);
QColor bmpBackA(254,254,254,0);
for(int i=0;i< bmpWidth;++i)
{
for(int j=0;j<bmpHeight;++j)
{
//如果身份證背景色等於 Color(254,254,254,255),則設置為透明色 Color(254,254,254,0)
if(bmp.pixelColor(i,j)==bmpBack)
{
bmp.setPixelColor(i,j,bmpBackA);
}
}
}
//保存轉換的圖片
bmp.save(path);
return;
}
