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;
}
posted @ 2017-09-27 19:03  學海無涯  阅读(5742)  评论(0编辑  收藏  举报