最近在写博文的内容中经常要使用到python处理图片,感觉对图片的了解不是很清楚。所以翻阅和学习网上的资料和内容,通过实战操作来,写了这篇关于pillow处理图片的博文,对我们日常中操作图片的一个小小总结,供大家参考。
使用前我们先通过pip安装一个pillow库
python -m pip install pillow
也可以使用国内镜像下载,下载速度更快哦!
python -m pip install pillow -i https://pypi.douban.com/simple
使用 open() 函数,即可加载一张图片,打开图片时我们不用关系图片是什么格式的。
# 打开一个图片
img = Image.open(path)
# 保存图片
img.save(path)
有时候我们需要缩放图片,可以使用thumbnail()函数可以实现图片的缩小,不如我们想把图片缩小50%可以这么操作:
w, h = img.size
img.thumbnail((w//2, h//2))
注:大家可以看下thumbnail()方法的底层实现,其实该方法只能只能缩小图片,如果放缩大于原图的尺寸,则以展示原图。大家可以把上面的整除(//)调整为乘法()便知道了。*
有时我们需要对原图进行模糊处理,可以使用filter()方法实现。
img2 = img.filter(ImageFilter.BLUR)
图片模糊后的效果如下:
函数里面的参数也比较多,对图片的过来也比较丰富,大家可以参考博文(https://blog.csdn.net/icamera0/article/details/50708888/)中的内容。
有时候我们需要对图片进行裁剪,可以使用crop(box)函数,其中代表左上角和右下角的坐标。
box = (0, 0, 75, 75)
region = img.crop(box)
因为我的图片大小是(150*150)的,所以按照上面方式获取的图片就是左上角的那四分之一图片
rotate(angle)可以实现对图片的旋转,angle标识逆时针旋转图片
out = img.rotate(45)
我们也可以对图片做镜像处理。可以使用transpose()函数。
out = img.transpose(Image.FLIP_LEFT_RIGHT)
有时候我们如果需要把一张彩色图片转换成黑白图片怎么处理呢?使用convert(“L”)就可以搞定。
img.convert("L")
上面的说明都是由我先敲出代码后总结出来的,现在分享一下我的代码。其中大家在使用下面代码需要准备一张自己的图片。
# -*- coding: utf-8 -*-
from PIL import Image, ImageFilter
# 打开图片,保存图片
def show_image(path):
img = Image.open(path)
img.show()
print("图片格式:", img.format)
print("图片长宽:", img.size)
print("像素类型:", img.mode)
img.save("m1090760001.png")
# 图片放缩
def thumbnail_image(path):
img = Image.open(path)
w, h = img.size
img.thumbnail((w//2, h//2))
img.show()
# 图片过滤
def filter_image(path):
img = Image.open(path)
img2 = img.filter(ImageFilter.BLUR)
img2.show()
# 图片裁剪
def crop_image(path):
img = Image.open(path)
box = (0, 0, 75, 75)
region = img.crop(box)
region.show()
# 图片旋转
def rotate_image(path):
img = Image.open(path)
out = img.rotate(45)
out.show()
# 镜像转换
def transpose_image(path):
img = Image.open(path)
out = img.transpose(Image.FLIP_LEFT_RIGHT)
out.show()
out = img.transpose(Image.FLIP_TOP_BOTTOM)
out.show()
# 图片模式调整,灰白图片
def convert_image(path):
img = Image.open(path).convert("L")
img.show()
if __name__ == "__main__":
path = "m1090760001.jpg"
# show_image(path)
# thumbnail_image(path)
# filter_image(path)
# crop_image(path)
# rotate_image(path)
# transpose_image(path)
convert_image(path)