码迷,mamicode.com
首页 > 其他好文 > 详细

PIL库图像处理

时间:2019-04-06 12:33:46      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:打开   名称   nbsp   文件存储   port   form   http   inf   height   

Python Imaging Library,简称PIL, 是 Python语言 中常用的图像处理库,需要通过pip工具安装:pip install pillow。PIL库支持图像存储、显示和处理,能够处理几乎所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。

PIL包含21个与图片相关的类,这里只介绍Image类,Image类是PIL最重要的类,他代表一张图片,用以下方法引入:

要从文件加载图像,使用模块中open()函数Image

>>> from PIL import Image

 

方法 描述
Image.open(filename) 根据参数加载文件
Image.new(mode,size,color) 根据给定参数创建一个新图像
Image.open(StringIO.StringIO(buffer)) 从字符串中获取图像
Image.frombytes(mode,size,data) 根据像素点data创建图像
Image.verify() 对图像文件完整性进行检查,返回异常

要从文件加载图像,使用模块中open()函数Image:

>>> im = Image.open("hopper.ppm")

如果成功,则此函数返回一个Image对象。

Image类有4个处理图片的常用属性,如下

属性 描述
Image.format 标识图像格式或来源,如果图像不是从文件获取,值为None
Image.mode 图像的色彩模式,"L"为灰度图像、"RGB"为真彩色图像、"CMYK"为出版图像
Image.size 图像宽度和高度,单位是像素(px),返回值是二元元组(tuple)
Image.palette 调色板属性,返回一个ImagePalette类型

 

可以查看文件属性:

>>> print(im.format, im.size, im.mode)
PPM (512, 512) RGB

 

format属性标识图像的来源。如果未从文件中读取图像,则将其设置为“无”。size属性是一个包含宽度和高度(以像素为单位)的2元组。该 mode属性定义图像中波段的数量和名称,以及像素类型和深度。常见模式是灰度图像的“L”(亮度),真彩色图像的“RGB”和印前图像的“CMYK”。

如果无法打开该文件,IOError则会引发异常。

获得Image的实例后,可以使用此类定义的方法来处理和操作图像。例如,让我们显示刚刚加载的图像:

>>> im.show()

Python Imaging Library支持各种图像文件格式。要从磁盘读取文件,使用模块中open()功能Image无需知道打开文件的文件格式。库根据文件内容自动确定格式。

技术图片

要保存文件,使用该类save()方法 Image保存文件时,名称变得很重要。除非指定格式,否则库使用文件扩展名来发现要使用的文件存储格式。

from __future__ import print_function
import os, sys
from PIL import Image

for infile in sys.argv[1:]:
    f, e = os.path.splitext(infile)
    outfile = f + ".jpg"
    if infile != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("cannot convert", infile)
上述save函数还可指定保存格式,例如:
>>>im.save(outfile,"JPEG")

使用thumbnail(size,resample)(创建缩略图)创建一个指定大小(size)的缩略图,需要注意的是,thumbnail方法是原地操作,返回值是None。
第一个参数是指定的缩略图的大小,第二个是采样的,有Image.BICUBICPIL.Image.LANCZOSPIL.Image.BILINEARPIL.Image.NEAREST这四种采样方法。默认是Image.BICUBIC。
>>> im.thumbnail((50,50),resample=Image.BICUBIC)
>>> im.show()

图像过滤

Pillow使用ImageFilter可以简单做到图像的模糊、边缘增强、锐利、平滑等常见操作。

from PIL import Image, ImageFilter

im = Image.open(im_path)
# 高斯模糊
im.filter(ImageFilter.GaussianBlur).save(rD:\gzt.jpg)
# 普通模糊
im.filter(ImageFilter.BLUR).saverD:\gzt.jpg)
# 边缘增强
im.filter(ImageFilter.EDGE_ENHANCE).save(rD:\gzt.jpg)
# 找到边缘
im.filter(ImageFilter.FIND_EDGES).save(rD:\gzt.jpg)
# 浮雕
im.filter(ImageFilter.EMBOSS).save(rD:\gzt.jpg)
# 轮廓
im.filter(ImageFilter.CONTOUR).save(rD:\gzt.jpg)
# 锐化
im.filter(ImageFilter.SHARPEN).save(rD:\gzt.jpg)
# 平滑
im.filter(ImageFilter.SMOOTH).save(rD:\gzt.jpg)
# 细节
im.filter(ImageFilter.DETAIL).save(rD:\gzt.jpg)

以下示例高斯模糊

>>>im.filter(ImageFilter.GaussianBlur).save(rD:\gzt.jpg)
>>>im.show()

 

技术图片

 

PIL库图像处理

标签:打开   名称   nbsp   文件存储   port   form   http   inf   height   

原文地址:https://www.cnblogs.com/guyuanlin/p/10660422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!