【Python】PIL图像操作大全!

 一、常用基本操作

# 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 见附录

二、补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值