您的位置:首页 > 编程语言 > Python开发

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

2016-02-27 21:23 831 查看
ImageFile模块为图像的打开和保存提供了一些函数。

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

一、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 ImageFile

fp = 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如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: