Pillow 是 Python 里的图像处理库(PIL:Python Image Library), 提供了了广泛的文件格式支持, 强大的图像处理能力, 主要包括图像储存, 图像显示, 格式转换以及基本的图像处理操作等.
颜色与 RGBA 值
计算机通常将图像表示为 RGB 值, 或者再加上 alpha 值 (通透度, 透明度), 称为 RGBA 值. 在 Pillow 中, RGBA 的值表示为由 4 个整数组成的元组, 分别是 R,G,B,A. 整数的范围 0~255.RGB 全 0 就可以表示黑色, 全 255 代表黑色. 可以猜测(255, 0, 0, 255) 代表红色, 因为 R 分量最大, G,B 分量为 0, 所以呈现出来是红色. 但是当 alpha 值为 0 时, 无论是什么颜色, 该颜色都不可见, 可以理解为透明.
- from PIL import ImageColor
- print(ImageColor.getcolor('red', 'RGBA'))
- # 也可以只以 RBG 的方式查看
- print(ImageColor.getcolor('black', 'RGB'))
图像的坐标表示
图像中左上角是坐标原点(0, 0), 这和平常数学里的坐标系不太一样. 这样定义的坐标系意味着, X 轴是从左到右增长的, 而 Y 轴是从上到下增长.
在 Pillow 中如何使用上述定义的坐标系表示一块矩形区域? 许多函数或方法要求提供一个矩形元组参数. 元组参数包含四个值, 分别代表矩形四条边的距离 X 轴或者 Y 轴的距离. 顺序是 (左, 顶, 右, 底). 右和底坐标稍微特殊, 表示直到但不包括. 可以理解为[左, 右) 和[顶, 底)这样左闭右开的区间. 比如 (3, 2, 8, 9) 就表示了横坐标范围 [3, 7]; 纵坐标范围[2, 8] 的矩形区域.
使用 Pillow 操作图像
- from PIL import Image
- im_path = r'F:\Jupyter Notebook\csv_time_datetime_PIL\rabbit.jpg'
- im = Image.open(im_path)
- width, height = im.size
- # 宽高
- print(im.size, width, height)
- # 格式, 以及格式的详细描述
- print(im.format, im.format_description)
- im.save(r'C:\Users\Administrator\Desktop\rabbit_copy.jpg')
- im.show()
im.size 返回一个元组, 分别是宽和高. show()方法会调用系统默认图像查看软件, 打开并显示. im.format 可查看图像的格式. save()可保存处理后的图片, 如果未经处理, 保存后的图像占用的空间 (字节数) 一般也与原图像不一样, 可能经过了压缩.
裁剪图像
Image 有个 crop()方法接收一个矩形区域元组(上面有提到). 返回一个新的 Image 对象, 是裁剪后的图像, 对原图没有影响.
- im = Image.open(im_path)
- cropedIm = im.crop((700, 100, 1200, 1000))
- cropedIm.save(r'C:\Users\Administrator\Desktop\cropped.png')
调整图像的大小
resize 方法返回指定宽高度的新 Image 对象, 接受一个含有宽高的元组作为参数. 宽高的值得是整数.
- im = Image.open(im_path)
- width, height = im.size
- resizedIm = im.resize((width, height+(1920-1080)))
- resizedIm.save(r'C:\Users\Administrator\Desktop\resize.png')
来源: http://www.bubuko.com/infodetail-2887398.html