Pillow模块:处理图像文件
pillow的模块名称是PIL
pip install pillow
裁剪图像、调整图像大小、编辑图像的内容
一、计算机图像基础
1.颜色和 RGBA 值
红、绿、蓝和 alpha(透明度) alpha也是0~255(0 完全透明)
Green - - - (0, 128, 0, 255)
Gray - - - (128, 128, 128, 255)
Purple - - - (128, 0, 128, 255)
ImageColor.getcolor()
函数
arg1: 颜色名称(不区分大小写) - - - - - arg2:‘RGBA’ - - - - - 返回一个 RGBA 元组
from PIL import ImageColor
ImageColor.getcolor('red', 'RGBA') # (255, 0, 0, 255)
ImageColor.getcolor('chocolate', 'RGBA') # (210, 105, 30, 255)
CMYK 墨盒:青色(蓝色)、品红色(红色)、黄色和黑色墨水
RGB
2.坐标和 Box 元组
图像像素用 x(水平)和 y(垂直)坐标指定
原点是位于图像左上角的像素,用符号(0,0)指定
许多 Pillow 函数和方法需要一个矩形元组参数。这意味着 Pillow 需要一个四个整坐标的元组,表示图像中的一个矩形区域。四个整数按顺序分别是:
左:该矩形的最左边的 x 坐标
顶:该矩形的顶边的 y 坐标
右:该矩形的最右边右面一个像素的 x 坐标。此整数必须比左边整数大
底:该矩形的底边下面一个像素的 y 坐标。此整数必须比顶边整数大
注意:该矩形包括左和顶坐标,直到但不包括右和底坐标
二、用 Pillow 操作图像
from PIL import Image
catIm = Image.open('zophie.png')
Image.open()
函数:返回值是 Image 对象数据类型,它是 Pillow 将图像表示为Python 值的方法。可以调用 Image.open(),传入文件名字符串,从一个图像文件(任何格式)加载一个 Image 对象。通过 save()
方法,对 Image 对象的所有更改都可以保存到图像文件中(也是任何格式)。所有的旋转、调整大小、裁剪、绘画和其他图像操作,都通过这个 Image 对象上的方法调用来完成。
1.处理 Image 数据类型
Image 对象有一些有用的属性,提供了加载的图像文件的基本信息:它的宽度和高度、文件名和图像格式(如 JPEG、GIF 或 PNG)
from PIL import Image
# 加载图片
catIm = Image.open('zophie.png')
# image的宽高
catIm.size # (816, 1088)
width, height = catIm.size
width # 816
# image的名称
catIm.filename # 'zophie.png'
# image的后缀名
catIm.format # 'PNG'
catIm.format_description # 'Portable network graphics' (便携式网络图形)
catIm.save('zophie.jpg')
Image.new()
函数,返回一个 Image 对象,表示空白的图像
img = Image.new(‘RGB’, (width, height), color=‘white’)
# 创建新的图像对象
from PIL import Image
im = Image.new('RGBA', (100, 200), 'purple')
im.save('purpleImage.png')
# 未指定颜色参数,默认的颜色是不可见的黑色(0,0,0,0)
im2 = Image.new('RGBA', (20, 20))
im2.save('transparentImage.png')
ImageColor.getcolor()函数的返回值作为Image.new()的arg3。另外,Image.new()也支持传入标准颜色名称的字符串。
2.裁剪图片
裁剪图像是指在图像内选择一个矩形区域,并删除矩形之外的一切
Image 对象的 crop()方法接受一个矩形元组,返回一个 Image 对象,表示裁剪后的图像。裁剪不是在原图上发生的,也就是说,原始的 Image 对象原封不动,crop()方法返回一个新的 Image 对象
img_cropped = img.crop((left, top, right, bottom))
croppedIm = catIm.crop((335, 345, 565, 560))
croppedIm.save('cropped.png')
3.复制和粘贴图像到其他图像 copy()
catIm = Image.open('zophie.png')
catCopyIm = catIm.copy()
paste()
方法在 Image 对象调用,将另一个图像粘贴在它上面
faceIm = catIm.crop((335, 345, 565, 560))
faceIm.size # (230, 215)
catCopyIm.paste(faceIm, (0, 0))
catCopyIm.paste(faceIm, (400, 500))
catCopyIm.save('pasted.png')
假定要用 Zophie 的头平铺整个图像
catImWidth, catImHeight