Python常用模块之PIL(手册篇:Image模块)

官方手册地址:http://effbot.org/imagingbook/image.htm

 

 

 Image模块

图像模块提供了一个具有相同名称的类,用于表示一个PIL的图像。该模块还提供了许多功能,包括加载图片文件函数和创建新的图像函数。

 

模块示例:

下面的程序加载一个图像,再旋转45度,并使用一个外部查看器(通常在Unix上的xv[1],在Windows上的看图程序[2])显示它。

1 # 打开,旋转,展示一张图片(使用默认查看器)
2 from PIL import Image
3 im = Image.open("bride.jpg")
4 im.rotate(45).show()

 下面的程序将在当前目录中创建所有JPEG图像的缩略图(尺寸:128 x128)。 

 1 # 创建缩略图
 2 from PIL import Image
 3 import glob, os
 4 
 5 size = 128, 128
 6 
 7 for infile in glob.glob("*.jpg"):
 8     file, ext = os.path.splitext(infile)
 9     im = Image.open(infile)
10     im.thumbnail(size, Image.ANTIALIAS)
11     im.save(file + ".thumbnail", "JPEG")

 

模块函数:

new

Image.new(mode, size) ⇒ image

Image.new(mode, size, color) ⇒ image

使用给定模式(mode)和大小(size)创建一个新的图片。大小(size)使用的是(宽度、高度)二元组,并以像素为单位。对于单通道图像,颜色(color)使用单一值;对于多通道图像,颜色(color)使用多元组(每通道使用一个值)。1.1.4及之后版本中,您还可以使用颜色名称(有关详细信息,请参阅ImageColor模块文档)如果省略颜色参数(color),图像使用零填充(这通常对应于黑色)。如果颜色为空(None),图像不会进行初始化。如果你打算在一幅图像上粘贴或描绘一些东西,这可能是有用的。 

1 from PIL import Image
2 im = Image.new("RGB", (512, 512), "white")

 

open

Image.open(file) ⇒ image

Image.open(file, mode) ⇒ image

打开并识别给定的图像文件。这是一个便利的操作,函数读取文件头,但直到你尝试处理数据,实际图像数据才会从文件中读取(调用load方法可以强制加载)。如果模式参数(mode)要求赋值,它必须是“r”。

你可以使用一个字符串(代表文件名)或一个文件对象作为文件参数(file)。在后一种情况下,文件对象必须实现readseek,以及tell方法,并要求以二进制模式打开。 

1 from PIL import Image
2 im = Image.open("lenna.jpg")
1 from PIL import Image
2 from StringIO import StringIO
3 
4 # read data from string
5 im = Image.open(StringIO(data))

  

blend

Image.blend(image1, image2, alpha) ⇒ image

使用常数alpha,将给定的两张图像进行混合,创建一个新的图像。待混合的两张图像都必须有相同的大小和模式。

    out = image1 * (1.0 - alpha) + image2 * alpha

如果alpha为0.0,返回第一张图像image1的副本。如果alpha为1.0,返回第二个图像image2的一个副本。对alpha值没有限制。如果有必要,结果将被裁剪以适应允许输出范围。

 

composite

Image.composite(image1, image2, mask) ⇒ image

 

 

模块属性:

图像类Image的实例有以下属性:

format

im.format ⇒ string or None

源文件的文件格式。对库本身创建的图像(在现有图像上通过一个工厂函数,或通过运行方法),这个属性设置为None。

  

mode

im.mode ⇒ string

图像模式。这是一个字符串,指定图像所使用的像素格式。典型值有“1”、“L”、“RGB”或“CMYK”。取值完整列表请参阅这里

 

size

im.size ⇒ (width, height)

图像大小,以像素为单位。大小以二元组(width,height)表示。

 

palette

im.palette ⇒ palette or None

如果调色板palette存在。如果模式mode为“P”,该值应该为ImagePalette类的一个实例。否则,它应该设置为None。

  

info

im.info ⇒ dictionary

与图像相关的数据字典。文件处理程序将使用该字典,通过使用各种非图像信息读取该文件。有关详细信息,请参阅各种文件处理程序的文档。

当返回新的图像时,大多数方法忽略该字典;因为关键字不是标准化的,方法是不可能知道操作是否影响了字典。以后如果你需要信息,保持open方法返回的info字典的索引。

 

 

未完,待续...

 

注解:

[1] 暂还不理解Unix上的xv表示什么?应该也是一个显示图像的工具。您要是知道表示什么,可以在评论区告知,对您的告知表示感谢。

[2] 在Windows 7(虚拟机)上运行该段代码 ,Windows照片查看器没能打开图片,提示图片不存在;第三方看图工具Picasa可以打开图片,具体原因不详。

 

posted @ 2017-09-13 22:10  香瓣依生  阅读(1537)  评论(1编辑  收藏  举报