Qt 如何使用 QImage 設置指定的顏色為透明色?


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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM