【项目1】彩色图片去色

from PIL import Image
# 像安装 cocos2d 一样安装 PIL 库, 方法如下
# pip3 install pillow
# 这是 python 用于处理图像文件的库


"""
下面介绍一下计算机存储图像的原理

w 是图像宽
h 是图像高
一个图像由 w * h 个像素点组成
每个像素点由 rgba 4 个部分组成
r 红色
g 绿色
b 蓝色
a 透明度

现在的图像 rgba 分别是一个字节表示,一个字节的数值范围是 0 - 255
也就是一个像素点 4 字节,可以表示的颜色范围是 256 的 4 次方

但是很多图像是没有 a 的,所以就只有 3 字节表示一个像素



作业要求:
参考下面的链接和本文件的代码
https://baike.baidu.com/item/%E5%8E%BB%E8%89%B2

实现 grayscale 函数,让生成的 gua.png 是黑白的
"""


log = print


def grayscale(image, position, gray, a):
    #将position位置的像素RGB替换为gray,A不变
    image.putpixel(position, (gray, gray, gray, a))


def main():
    # 打开图像文件
    img = Image.open("gua_sample.png")
    # 注意由于不是每个图像都有 a 所以这里强制转换成 RGBA 格式
    img = img.convert('RGBA')
    size = img.size

    # 读取座标 (i, j) 处的像素点的像素值

    for i in range(size[0]):
        for j in range(size[1]):
            position = (i, j)
            r, g, b, a = img.getpixel(position)
            log('get pixel', r, g, b, a)
            gray = (r * 30 + g * 59 + b * 11) / 100
            gray = int(gray)
            log('gray', gray)
            grayscale(img, position, gray, a)

    # 保存图像文件
    img.save('gua.png')


if __name__ == '__main__':
    main()

猜你喜欢

转载自www.cnblogs.com/bladeofstalin/p/9261550.html