一、常用基本操作
# 1. 导入图像库
from PIL import Image
# 2. 打开一张图片
image = Image.open("cat.jpg")
# 3. 显示一张图片
image.show()
# 4. 保存图片,格式为GIF
image.save('cat_2.gif', 'GIF')
# 5. 创建新图片
# Image.new(mode, size, color)
newimage = Image.new('RGB', (300, 280), (90, 198, 156))
# newimage.show()
# 6. 两张图片相加
# im_blend = image1 * (1.0 - alpha) + image2 * alpha
# 这里alpha为0.5
im_blend = Image.blend(image, newimage, 0.5)
# im_blend.show()
# 7. 点操作
# image.point(function) function作为一个函数,对图片的每一个点都执行一次这个函数
im_point = image.point(lambda i: i * 1.5) # 对每个点将强50%
# im_point.show()
# 8. 查看图片信息
# 格式、尺寸、通道
print(image.format, image.size, image.mode)
# 9. 图片裁剪
# ps: 这个box是(左,上,右,下),
# 而且四个坐标都是以左上角(0,0)为参照
# box实际上就是找两个坐标点,box的左上角和右下角坐标
box = (50, 50, 100, 200)
region = image.crop(box)
# region.show()
# 10. 图像黏贴(合并)
# 粘贴box大小的region到原先的图片对象中。
newimage.paste(region, box)
#newimage.show()
# 11. 通道分离:
# 分割成三个通道,此时r,g,b分别为三个图像对象。
# 实际得到三张1通道的灰度图像
r, g, b=image.split()
# 12. 通道合并:
# 将b,r两个通道进行了翻转,以与原图对比。
im_merge = Image.merge("RGB",(b,g,r))
# im_merge.show()
# 13. 改变图像的大小:
# resize成128*128像素大小
im_resize = image.resize((128,128))
# im_resize.show()
# 14. 旋转图像:
#逆时针旋转45度
im_rotate = image.rotate(45)
# 另一种方法:ROTATE_90、180、270
im_rotate = image.transpose(Image.ROTATE_180)
# 15. 图像转换:
# 左右对换
im_lr = image.transpose(Image.FLIP_LEFT_RIGHT)
# 上下对换
im_ud = image.transpose(Image.FLIP_TOP_BOTTOM)
# 16. 图像类型转换:
im_convert = image.convert("RGBA")
# 17. 获取某个像素位置的值:
image.getpixel((4,4))
# 18. 写某个像素位置的值:
image.putpixel((4,4),(255,0,0))
# 19. 合成
# 初始化一下原图像(上面的各种操作已经把原图像污染)
image = Image.open("cat.jpg")
newimage = Image.new('RGB', (300, 280), (90, 198, 156))
# 第三个参数是个mask,这里用的是上面操作生成的b,r、g也行
im_composite = Image.composite(image, newimage, b)
# im_composite.show()
# 20. 缩放
image.thumbnail((100, 100))
# image.show()
# 21. 复制
image_copy = image.copy()
# 22.滤镜 filter 见附录
二、补充