Pillow处理图片功能一览

  • 一、前言
  • 二、安装pillow
  • 三、pillow操作图片
  • 2.1 打开图片、保存图片
  • 2.2 图片放缩
  • 2.3 图片过滤
  • 2.4 图片裁剪
  • 2.5 图片旋转
  • 2.6 镜像转换
  • 2.7 图片模式调整
  • 四、实战


一、前言

最近在写博文的内容中经常要使用到python处理图片,感觉对图片的了解不是很清楚。所以翻阅和学习网上的资料和内容,通过实战操作来,写了这篇关于pillow处理图片的博文,对我们日常中操作图片的一个小小总结,供大家参考。

二、安装pillow

使用前我们先通过pip安装一个pillow库

python -m pip install pillow

也可以使用国内镜像下载,下载速度更快哦!

python -m pip install pillow -i https://pypi.douban.com/simple

三、pillow操作图片

2.1 打开图片、保存图片

使用 open() 函数,即可加载一张图片,打开图片时我们不用关系图片是什么格式的。

# 打开一个图片
img = Image.open(path)
# 保存图片
img.save(path)

加载效果如下:

python实现图片全屏显示 python操作图片_Image

2.2 图片放缩

有时候我们需要缩放图片,可以使用thumbnail()函数可以实现图片的缩小,不如我们想把图片缩小50%可以这么操作:

w, h = img.size
    img.thumbnail((w//2, h//2))

缩放效果如下:

python实现图片全屏显示 python操作图片_pillow_02

注:大家可以看下thumbnail()方法的底层实现,其实该方法只能只能缩小图片,如果放缩大于原图的尺寸,则以展示原图。大家可以把上面的整除(//)调整为乘法()便知道了。*

2.3 图片过滤

有时我们需要对原图进行模糊处理,可以使用filter()方法实现。

img2 = img.filter(ImageFilter.BLUR)

图片模糊后的效果如下:

python实现图片全屏显示 python操作图片_图片旋转_03


函数里面的参数也比较多,对图片的过来也比较丰富,大家可以参考博文()中的内容。

2.4 图片裁剪

有时候我们需要对图片进行裁剪,可以使用crop(box)函数,其中代表左上角和右下角的坐标。

box = (0, 0, 75, 75)
region = img.crop(box)

因为我的图片大小是(150*150)的,所以按照上面方式获取的图片就是左上角的那四分之一图片

python实现图片全屏显示 python操作图片_保存图片_04

2.5 图片旋转

rotate(angle)可以实现对图片的旋转,angle标识逆时针旋转图片

out = img.rotate(45)

旋转后的效果如下:

python实现图片全屏显示 python操作图片_图片旋转_05

2.6 镜像转换

我们也可以对图片做镜像处理。可以使用transpose()函数。

out = img.transpose(Image.FLIP_LEFT_RIGHT)

时间镜像处理后效果如下,是不是感觉图片被左右翻面了一下。

python实现图片全屏显示 python操作图片_python实现图片全屏显示_06

2.7 图片模式调整

有时候我们如果需要把一张彩色图片转换成黑白图片怎么处理呢?使用convert(“L”)就可以搞定。

img.convert("L")

黑白处理,有点丧。哈哈哈!

python实现图片全屏显示 python操作图片_Image_07

四、实战

上面的说明都是由我先敲出代码后总结出来的,现在分享一下我的代码。其中大家在使用下面代码需要准备一张自己的图片。

# -*- 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)