当前位置: 首页 > 工具软件 > Pillow > 使用案例 >

Python中Pillow(PIL)的使用

姚烨
2023-12-01

 PIL是Python处理图像的库,但PIL仅支持到Python 2.7,于是在PIL的基础上创建了兼容的版本,即为Pillow,支持最新Python 3.x,可用pip直接下载安装。

使用Pillow操作图像

from PIL import Image

读取图像

img=Image.open('filename')

保存图片

img.save(outfile, "JPEG")

ps:原 png 图片保存为 jpg 类型时,需添加命令 img=img.convert('RGB')

       因为PNG有RGBA四个通道,而JPEG是RGB三个通道,所以PNG转BMP时候程序不知道A通道怎么办,就会产生错误。

       解决方法就是检查通道数,舍弃A通道。

获得图片属性

img.format;    图片格式; 

img.size;      图片尺寸;

img.mode     图片模式

裁剪、粘贴、合并

box = img.copy()          # 复制
box = (100, 100, 400, 400)      # 设置需要裁剪的区域
region = img.crop(box)        # 裁剪,返回新的图像region,对原图无影响
img.paste(region, box)        # 粘贴box大小的region到原先的图片对象中

几何变换

1.缩放

img.resize((200,200))        # 给定尺寸缩放

skimage.transform.rescale(img, scale[, ...])      # 按比例缩放scale参数可以是单个float数,表示缩放的倍数,也可以是一个                                                                                       float型的tuple,如[0.2,0.5],表示将行列数分开进行缩放

2.旋转与翻转

img.rotate(90)                   # 给定角度逆时针旋转

out = img.transpose(img.ROTATE_90)        # 逆时针旋转90°

out = img.transpose(img.FLIP_LEFT_RIGHT)        # 左右翻转

out = img.transpose(img.FLIP_TOP_BOTTOM)     # 上下翻转

··························································          (吾乃华丽的分割线)          ·······················································

来举个栗子:

from PIL import Image

# 打开图像(填的是图片地址)
img=Image.open('/home/dongwh/LuoKuo/test/code/1.png')
img=img.convert('RGB')
# 获得图像尺寸
w,h=img.size
print('获得图片大小是: %sx%s' % (w, h))
# 缩放到50%:
img=img.resize((w//2, h//2))
print('重构后的图片大小是: %sx%s' % (w//2, h//2))
# 把缩放后的图像用jpeg格式保存:
img.save('new1.jpg', 'jpeg')

得到输出

获得图片大小是: 640x480
重构后的图片大小是: 320x240
 类似资料: