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

 Image模块

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

模块示例:

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

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

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

 # 创建缩略图
from PIL import Image
import glob, os size = 128, 128 for infile in glob.glob("*.jpg"):
file, ext = os.path.splitext(infile)
im = Image.open(infile)
im.thumbnail(size, Image.ANTIALIAS)
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),图像不会进行初始化。如果你打算在一幅图像上粘贴或描绘一些东西,这可能是有用的。

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

open

Image.open(file) ⇒ image

Image.open(file, mode) ⇒ image

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

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

 from PIL import Image
im = Image.open("lenna.jpg")
 from PIL import Image
from StringIO import StringIO # read data from string
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可以打开图片,具体原因不详。

Python常用模块之PIL(手册篇:Image模块)的更多相关文章

  1. Python之路(第十六篇)xml模块、datetime模块

    一.xml模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单, xml比较早,早期许多软件都是用xml,至今很多传统公司如金融行业的很多系统的接口还主要 ...

  2. Python学习【第十二篇】模块(2)

    序列化 1.什么是python序列化? 把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling 序列化就是将python的数据类型转换成字符串 反序列化就是将字符串转换成 ...

  3. Python之路【第六篇】:模块与包

    目录 一 模块 3.1 import 3.2 from ... import... 3.3 把模块当做脚本执行 3.4 模块搜索路径 3.5 编译python文件 3.6  标准模块 3.7  dir ...

  4. Python开发【第十五篇】模块的导入

    的导入语句 import 语句 语法: import 模块名1 [as 模块别名] 作用: 将某模块整体导入到当前模块 示例: import math import sys,os 用法: 模块名.属性 ...

  5. Python常用模块之Pygame(手册篇:首页)

    Pygame手册官方网址:http://www.pygame.org/docs/ Pygame首页 说明文档: 自述 关于Pygame的基本信息,它是什么,谁参与了以及在哪里找到它. 安装 在几个平台 ...

  6. 洗礼灵魂,修炼python(91)-- 知识拾遗篇 —— pymysql模块之python操作mysql增删改查

    首先你得学会基本的mysql操作语句:mysql学习 其次,python要想操作mysql,靠python的内置模块是不行的,而如果通过os模块调用cmd命令虽然原理上是可以的,但是还是不太方便,那么 ...

  7. Python之路(第十九篇)hashlib模块

    一.hashlib模块 HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值 ...

  8. Python之路(第十八篇)shutil 模块、zipfile模块、configparser模块

    一.shutil 模块 1.shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中,需要打开文件 import shutil shutil.co ...

  9. Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块

    一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...

  10. Python之路(第十四篇)os模块

    一.os模块 1.os.getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) import os print(os.getcwd()) 2.os.chdir(path) 改变 ...

随机推荐

  1. programming-languages学习笔记--第9部分

    programming-languages学习笔记–第9部分 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src ...

  2. ajax调用webservice 跨域问题

    用js或者jquery跨域调用接口时 对方的接口需要做jsonp处理,你的ajax jsonp调用才可以 egg 接口中已经做了jsonp处理,所以可以跨域调用 //$.ajax({ // url: ...

  3. java基础二 java的跨平台特性

    一:java跨平台的特性: 1.生成不平台无关系的字节码. 2.通过和平台有关的jvm即java虚拟机来执行字节码.jvm不跨平台. 图示: 疑问:1.为什么我们不直接写字节码? 因为字节码只有jvm ...

  4. 拼多多java后台笔试题目总结(20180830)

    1.回合攻击问题 package com.hone.pdd; import java.util.Scanner; /** * 题目:模拟一个游戏场景,两种伤害,一种正常伤害,一种是先蓄力(也算一个回合 ...

  5. pH计

    pH计 测量原理 pH计主要用于测量液体中的氢离子浓度.准确地说是测量氢离子活性,得出酸性.中性还是碱性的数值,在自来水.河水.饮料.食品.污水.医疗和化工等领域广泛地使用工业用液体分析仪. pH计原 ...

  6. webpack初起步

    webpack 用于编译 JavaScript 模块.一旦完成安装,就可以通过 webpack 的 CLI 或 API 与其配合交互. 首先创建一个目录,进入目录中,初始化npm 然后本地安装webp ...

  7. Oracle 创建函数

    Oracle创建函数的方法如下: CREATE OR REPLACE FUNCTION FunctionName ( --传入参数 para NCHAR ) RETURN NUMBER IS --函数 ...

  8. 将CSV文件导入到hive数据库

    将csv文件导入hive后出现了所有的字段只显示在新建的表的第一个字段中,后面的字段全是null. 出现这种的原因是hive以行分隔数据,需要修改为按逗号'  ,  ‘ 进行分隔读取, 具体操作如下, ...

  9. 大数据入门第八天——MapReduce详解(三)MR的shuffer、combiner与Yarn集群分析

    /mr的combiner /mr的排序 /mr的shuffle /mr与yarn /mr运行模式 /mr实现join /mr全局图 /mr的压缩 今日提纲 一.流量汇总排序的实现 1.需求 对日志数据 ...

  10. eclipse各种小图标含义

    参考:https://wenku.baidu.com/view/69a0854df7ec4afe04a1df63.html outline:  实心的代表方法  空心的代表属性  绿色的圆表示公有pu ...