把图片的某种颜色改为透明

我先讲解下怎么把图片中指定的某种颜色修改成我们想要的颜色。具体流程很简单,在qt中有一个函数可以获取图片中的颜色表(即所有颜色),所有颜色存储在QVector里面,然后更具QVector里面的颜色表修改图片中的某种颜色。示例代码如下:

QImage image(":/image/pix.png");
//根据x,y提取像素点的Rgb
QRgb rgb = image.pixel(image.width()/2,image.height()/2);
//把图片所有颜色存储于rgbVector中
QVector<QRgb> rgbVector = image.colorTable();
for (int i = 0; i < rgbVector.size(); ++i)
{
     if(rgbVector.at(i) == rgb)
     {
        QRgb rgb2 = QColor(0,255,0).rgba();//替换的颜色可以是透明的,比如                        QColor(0,255,0,0)。
        image.setColor(i,rgb2);
     }
}

不过使用这种方法我碰到了一个问题,那就是如果图片不是8位深度,那么颜色表就提取不出来,于是我使用下面这个方法把图片的某种颜色设置为透明。

QImage Widget::getTransImage(QImage image , QPoint point)
{
    int imageW = image.width();
    int imageH = image.height();
    //判断所取的点是否在图片内部
    if(image.valid(point))
    {
        QRgb  rgb = image.pixel(point);
        QImage mask = image.createMaskFromColor(rgb,Qt::MaskOutColor);
        image.setAlphaChannel(mask);
        
        return image;
    }
    return image ;
}

以上代码的作用是将图片上点所在的像素颜色变为透明

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值