PIL是Python处理图像的库,但PIL仅支持到Python 2.7,于是在PIL的基础上创建了兼容的版本,即为Pillow,支持最新Python 3.x,可用pip直接下载安装。
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到原先的图片对象中
img.resize((200,200)) # 给定尺寸缩放
skimage.transform.rescale(img, scale[, ...]) # 按比例缩放scale参数可以是单个float数,表示缩放的倍数,也可以是一个 float型的tuple,如[0.2,0.5],表示将行列数分开进行缩放
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