Python如何更改图片指定区域的颜色(PIL库实现)

1.软件准备

安装python PIL库:

pip install pillow

2.功能介绍

2.1 获取图片的尺寸信息

右键图片查看属性,可以获取图片大小,如500x500

图片的坐标是正常二元坐标系沿x轴翻转的,原点在左上角,向下y轴正方形,向右x轴正方向:

 

2.2  RGB色域介绍

RGB由red,green,blue组成,对应xyz坐标一般分为256个等级,如下图,正红色可设定为

(255,0,0)

 

在RGB基础上衍生出了RGBA的概念,增加了一个α颜色空间,代表了像素的透明度。0代表完全透明

3.代码示例

需是将一张500x500的图片白色的部分变透明

首先我们看看原图:

代码如下:

用RGBA格式,纯白色是坐标是(255,255,255)

from PIL import Image

def changecolor(src, dst):
    img = Image.open(src)
    img = img.convert("RGBA")
    datas = img.getdata()
    newData = list()
    for data in datas:
        if data[0] > 230 and data[1] > 230 and data[2] > 230:
            newData.append((255, 255, 255, 0))
        else:
            newData.append(data)
    img.putdata(newData)
    img.save(dst, "PNG")
changecolor(r"C:\Users\qiz\Desktop\New folder\ori_new0.png",r"C:\Users\qiz\Desktop\New folder\ori_new0.png")

处理好的图片打开就是透明的啦,

那么如何指定区呢?比如我在上图的基础上染一个50x50的绿色方块:

我们添加一段代码,将代码改成如下:

from PIL import Image

def changecolor(src, dst):
    img = Image.open(src)
    img = img.convert("RGBA")
    datas = img.getdata()
    newData = list()
    for data in datas:
        if data[0] > 230 and data[1] > 230 and data[2] > 230:
            newData.append((255, 255, 255, 0))
        else:
            newData.append(data)
    
    im = img.load()
    img.putdata(newData)
    img.save(dst, "PNG")    
    for x in range(50):
        for y in range(50):
            im[x,y]=(0,255,0)
    img.save(dst, "PNG")
changecolor(r"C:\Users\qiz\Desktop\New folder\ori_new0.png",r"C:\Users\qiz\Desktop\New folder\ori_new0.png")

运行得到一个想要的图片了:

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值