django中PIL库的学习和使用
1. 基本使用
先安装
pip install pillow
再使用
from PIL import Image
im = Image.open("./ttt.jpg")
print(im.format) # jpg
print(im.size) # (长, 宽)
print(im.mode) # RGB
im.show() # 把im在界面上打开
im.save("./kkk.png") # 把这张图片保存成kkk.png,save也可以指定扩展名
写一个脚本判断所有图片类型
import os
from PIL import Image
for infile in os.listdir("./"):
try:
with Image.open(infile) as im:
print(infile, im.format, "%s*%s" % im.size, im.mode)
except OSError as e:
print(e)
2. 创建JPEG缩略图
im = Image.open("./ttt.jpg")
size = (300, 300)
im.thumbnail(size)
im.save("./ttt.thumnail.jpeg")
注意:这个缩小是等比例缩小的,也就是说按照最长的哪个缩小,如果想截图,这是不行的,这个方法只能等比例缩小
3. 固定范围切图crop
im = Image.open("./ttt.jpg")
box = (0,0,300,300)
region = im.crop(box) # 这相当于切来一个300*300的图像,赋值给region了,他有format,size,mode属性
region.save("./ttt.300*300.jpg")
也可以把剪切后的图形放到其他图形上,注意box大小一致
im.paste(region, (100,0,400,300))
im.show()
im.save("./ttt.jpg")
4. 变换颜色通道
im = Image.open("./ttt.jpg")
r, g, b = im.split()
im = Image.merge("RGB", (g, b, r))
im.show()
im.save("./ttt.rgb.jpg")
5. 变换几何图形 resize/rotate/transpose
resize:
out = im.resize((300, 300))
out.show() # resize是变换尺寸,把图形都改变了,压缩了,这点和thumbnail有很大不同
rotate: 注意rotate并不改变宽高
out2 = im.rotate(45) # rotate是顺时针旋转了,45度
transpose: 这个旋转改变了宽高,但是镜像没有改变宽高
out = im.transpose(Image.FLIP_LEFT_RIGHT) # 左右镜像
out = im.transpose(Image.FLIP_TOP_BOTTOM) # 上下镜像
out = im.transpose(Image.ROTATE_90) # 旋转90度 改变了宽高
out = im.transpose(Image.ROTATE_180) # 旋转180度 改变了宽高,只有90,180,270
6. 还有很多功能。。。
7. 与PIL库配合使用的os库 函数
os.path.splitext(“/home/python/jjj.png”) ==> (“/home/python/jjj”, “.png”) 提取后缀