Python图像处理库PIL的ImageFile模块介绍

来源:互联网 发布:线性时间选择算法java 编辑:程序博客网 时间:2024/05/22 14:26

ImageFile模块为图像的打开和保存提供了一些函数。

另外,它还提供了一个逐块解码图像的Parser类。这个类实现了与标准sgmllibxmllib模块一样的接口。

一、ImageFile模块的函数

1、  Parser

定义:ImageFile.Parser() Parser instance

含义:创建一个解析器对象。解析器不能被重复使用。

二、ImageFile模块的方法

1、  Feed

定义:parser.feed(data)

含义:为解析器填充一个字符串。这个方法可能会引起IOError异常。

2、  Close

定义:parser.close() image or None

含义:告诉解析器完成解码。如果解析器正在解码一张图像,将返回一个图像对象。否则,该方法会产生一个IOError异常。

注意:如果文件没有被识别,在方法close()中,解析器将产生一个IOError异常。如果文件能够被识别,但不能解码(例如,如果数据被破坏了,或者它使用了不支持的压缩方式),解析器将尽快在方法feed()或者close()中产生一个IOError异常。

三、ImageFile模块的使用实例

from PIL import ImageFilefp = open("D:\\Code\\Python\\test\\img\\test02.jpg", "rb")p = ImageFile.Parser()while 1:    s = fp.read(1024)    if not s:        break    p.feed(s)im = p.close()im.save("D:\\Document\\mdoc\\python\\pic\\10\\file_test.jpg");im.show()

使用函数ImageFile.Parser()创建了解析器的实例,通过方法feed()将从文件中读取的数据填充到解析中。最后调用方法close(),如果填充到解析器中的数据没有错误,将返回一张图像,即图像im。图像im与原始图像有很大区别。解析器会对原始图像进行解码,然后再按照PIL自己的算法重新进行JPEG编码。新产生的图像比原始图像小了三十多K bytes。但两张图像,很难通过肉眼发现不同之处。

原始图像如下:

图像im如下:

0 0
原创粉丝点击