专栏名称: Python开发者
人生苦短,我用 Python。伯乐在线旗下账号「Python开发者」分享 Python 相关的技术文章、工具资源、精选课程、热点资讯等。
目录
相关文章推荐
Python爱好者社区  ·  字节程序员过年回家被亲戚鄙视:你985在互联 ... ·  2 天前  
Python爱好者社区  ·  无人报考!顶尖大学,校区关停 ·  昨天  
Python爱好者社区  ·  yyds!《LLM书》PDF ·  17 小时前  
Python爱好者社区  ·  卧槽,这就是最牛逼的python教程 ·  2 天前  
Python开发者  ·  董事长刺死CTO(2):董事长早就写好复仇名 ... ·  6 天前  
51好读  ›  专栏  ›  Python开发者

Python 图像处理库 Pillow 入门

Python开发者  · 公众号  · Python  · 2017-05-29 17:13

正文

(点击 上方蓝字 ,快速关注我们)


来源:Belial_2010

blog.csdn.net/kezunhai/article/details/46446153

如有好文章投稿,请点击 → 这里了解详情


Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。


1)使用 Image 类


PIL最重要的类是 Image class, 你可以通过多种方法创建这个类的实例;你可以从文件加载图像,或者处理其他图像, 或者从 scratch 创建。


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


>>> from PIL import Image

>>> im = Image . open ( "E:/photoshop/1.jpg" )


加载成功后,将返回一个Image对象,可以通过使用示例属性查看文件内容:


>>> print ( im . format , im . size , im . mode )

( 'JPEG' , ( 600 , 351 ), 'RGB' )

>>>


format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度。常见的modes 有 “L” (luminance) 表示灰度图像, “RGB” 表示真彩色图像, and “CMYK” 表示出版图像。


如果文件打开错误,返回 IOError 错误。


只要你有了 Image 类的实例,你就可以通过类的方法处理图像。比如,下列方法可以显示图像:


im.show()


2)读写图像


PIL 模块支持大量图片格式。使用在 Image 模块的 open() 函数从磁盘读取文件。你不需要知道文件格式就能打开它,这个库能够根据文件内容自动确定文件格式。要保存文件,使用 Image 类的 save() 方法。保存文件的时候文件名变得重要了。除非你指定格式,否则这个库将会以文件名的扩展名作为格式保存。


加载文件,并转化为png格式:


"Python Image Library Test"

from PIL import Image

import os

import sys

for infile in sys . argv [ 1 : ] :

f , e = os . path . splitext ( infile )

outfile = f + ".png"

if infile != outfile :

try :

Image . open ( infile ). save ( outfile )

except IOError :

print ( "Cannot convert" , infile )


save() 方法的第二个参数可以指定文件格式。


3)创建缩略图


缩略图是网络开发或图像软件预览常用的一种基本技术,使用Python的Pillow图像库可以很方便的建立缩略图,如下:


# create thumbnail

size = ( 128 , 128 )

for infile in glob . glob ( "E:/photoshop/*.jpg" ) :

f , ext = os . path . splitext ( infile )

img = Image . open ( infile )

img . thumbnail ( size , Image . ANTIALIAS )

img . save ( f + ".thumbnail" , "JPEG" )


上段代码对photoshop下的jpg图像文件全部创建缩略图,并保存,glob模块是一种智能化的文件名匹配技术,在批图像处理中经常会用到。


注意:Pillow库不会直接解码或者加载图像栅格数据。当你打开一个文件,只会读取文件头信息用来确定格式,颜色模式,大小等等,文件的剩余部分不会主动处理。这意味着打开一个图像文件的操作十分快速,跟图片大小和压缩方式无关。


4)图像的剪切、粘贴与合并操作


Image 类包含的方法允许你操作图像部分选区,PIL.Image.Image.crop 方法获取图像的一个子矩形选区,如:


# crop, paste and merge

im = Image . open ( "E:/photoshop/lena.jpg" )

box = ( 100 , 100 , 300 , 300 )

region = im . crop ( box )


矩形选区有一个4元元组定义,分别表示左、上、右、下的坐标。这个库以左上角为坐标原点,单位是px,所以上诉代码复制了一个 200×200 pixels 的矩形选区。这个选区现在可以被处理并且粘贴到原图。


region = region . transpose ( Image . ROTATE_180 )

im







请到「今天看啥」查看全文