mage 模块提供了同名的类用来表示PIL的图像。Image模块还提供了许多工厂(factory)函数,包块从文件加载图像的函数,以及创建新图像的函数。

例子 
下面的脚本加载了一个图像,并把它旋转了45度,然后调用外部的查看器(通常在Unix下是xv,Windows下是paint)。 
打开,旋转,和显示图像(使用默认的查看器) 
from PIL import Image 
im = Image.open("bride.jpg") 
im.rotate(45).show() 
下面的脚本为当前目录下所以的JPEG图像创建漂亮128x128的缩略图。 
创建缩略图 
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) => p_w_picpath 
Image.new(mode, size, color) => p_w_picpath 
以指定的模式和大小创建一个新图像。大小以2元元组的形式给出。给colour赋单个值,表示要创建单波段图像,元组表示创建多波段图像(每个波段一个值)。如果忽略colour参数,图像将以黑色填充。如果colour设为None,图像不会被初始化。 
open 
Image.open(infile) => p_w_picpath 
Image.open(infile, mode) => p_w_picpath 
打开并识别给定图像文件。这是一个偷懒的操作;真正的图像数据只有到处理的时候才会被读入(调用load函数强制加载)。如果给出了模式(mode)参数,它必须设为“r”。 
要打开图像,即可以使用字符串(表示文件名)也可以使用文件对象。对后一种情况,文件对象必须实现了read,seek,和 tell 方法,并以二进制模式打开。 
blend 
Image.blend(p_w_picpath1, p_w_picpath2, alpha) => p_w_picpath 
通过使用alpha常量,在图像进行差值操作,创建新图像。两个图像必须具有相同的大小和模式。 
out = p_w_picpath1 * (1.0 - alpha) + p_w_picpath2 * alpha 
(注:没有成功) 
如果设置alpha为0.0,将返回第一个图像的拷贝。如果设置alpha为1.0,将返回第二个图像的拷贝。对alpha的值没有限制。必要的话,结果会被剪裁,以适合允许的输出范围。 
composite 
Image.composite(p_w_picpath1, p_w_picpath2, mask) => p_w_picpath 
使用遮罩(mask)作为alpha,通过在两个图像之间进行插值来创建一个新图像。遮罩图像的模式可以是“1”,“L”,或者“RGBA”。所有的图像的大小必须有相同。 
eval 
Image.eval_r(p_w_picpath, function) => p_w_picpath 
把函数(function)(应该接收一个参数)应用到所给图像的每一个像素。如果图像有多个波段,相同的函数会应用到每一个波段。注意,该函数对每一个可能的像素值只计算一次,所有不能使用随机组件(components)或者其它发生器(generators)。 
frombuffer 
Image.frombuffer(mode, size, data) => p_w_picpath 
(PIL1.1.4添加)。使用标准的“raw”×××,把来自字符串或者缓冲区(buffer)对象的图像数据创建为一个图像内存(p_w_picpath memory)。对于某些模式,图像内存会和原来的缓冲区共享内存(这意味着对原始缓冲区对象的修改会影响图像)。不是所有的模式都能共享内存;支持共享内存的模式包括:“L”,“RGBX”,“RGBA”和“CMYK”。对其其它模式,这个函数的作用与fromstring函数类似。 
注意:1.1.6版中,默认的方向与fromstring的不同。这些可能会在未来的版本中发生变化,所以为了最大的兼容性,建议在使用“raw”×××的时候给出所有的参数。 
im = Image.frombuffer(mode, size, data, "raw", mode, 0, 1)Image.frombuffer(mode, size, data, decoder, parameters) => p_w_picpath 
与调用fromstring 相同。 
fromstring 
Image.fromstring(mode, size, data) => p_w_picpath 
使用标准的“raw”×××从来自字符串的像素数据创建一个图像内存。 
Image.fromstring(mode, size, data, decoder, parameters) => p_w_picpath 
也一样,但是允许你使用PIL支持的任何像素×××。关于可用×××的更多信息,参见Writing Your Own File Decoder节 
注意,这个函数只对像素数据解码,而不是整个图像。如果字符串中包含了一个完整的图像文件,可以使用StringIO对象对它进行处理,并使用open函数加载图像。 
merge 
Image.merge(mode, bands) => p_w_picpath 
从几个单波段图像创建一个新图像。bands参数是包含图像的元组或列表,一个图像对应模式中描述的一个波段。所有波段的图像必须有相同的大小。 
方法 
一个Image类的实例具有下列方法。除非另外指出,所有的方法都返回一个新的Image类的实例,包含处理过的图像数据。 
convert 
im.convert(mode) => p_w_picpath 
返回图像转换后的副本 
如果原始图像是调色板图像,这个函数通过调色板转换像素。忽略mode参数,会自动选择一个模式,以保证所有的图像信息和调色板信息在没有调色板的时候也能表示出来。 
从彩×××像转换到黑白图像时,图像库使用ITU-R 601-2 luma转换: 
L = R * 299/1000 + G * 587/1000 + B * 114/1000在把图像转换为二值图(bilevel p_w_picpath)(模式“1”)时,源图像首先被转换为黑白图。然后在结果中,值大于127的像素点被设置为白色,图像抖动(and the p_w_picpath is dithered)。使用point方法可以改变阈值。 
im.convert(mode, matrix) => p_w_picpath 
使用转换矩阵,把一个 "RGB" 图像转换为 "L" 或者 "RGB" 图像。其中矩阵是一个4元或16元元组。 
下面的例子把一个RGB图像转换(根据ITU-R 709进行线性校正,using the D65 luminant)到CIE XYZ颜色空间: 
Convert RGB to XYZ 
rgb2xyz = ( 
0.412453, 0.357580, 0.180423, 0, 
0.212671, 0.715160, 0.072169, 0, 
0.019334, 0.119193, 0.950227, 0 ) 
out = im.convert("RGB", rgb2xyz) 
copy 
im.copy() => p_w_picpath 
Copies the p_w_picpath. Use this method if you wish to paste things into an p_w_picpath, but still retain the original.复制图像。如果你想往图像上粘贴东西,但是又保持源图像不变可以使用这个函数。 
crop 
im.crop(box) => p_w_picpath 
返回当前图像的一个矩形区域。box参数是一个定义了左,上,右,下像素坐标的4元元组。 
这是一个投篮操作。改变源图像可能会也可能不会影响剪裁的图像。要得到一个单独的拷贝,可以在剪裁的副本上应用load函数。 
draft 
im.draft(mode, size) 
配置图像文件加载器,使它返回一个与给定模式和大小尽可能匹配的图像。比如,你可以在加载的时候,把一个彩色的JPEG图像转换为一个灰度图,或者从一个PCD文件中提取出一个128x192的版本。 
注意这个方法在适当的时候修改图像对象。如果图像已经加载了,这个方法可能无效。 

转载于:https://blog.51cto.com/tomyong/1140152

python-- Image 模块相关推荐

  1. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  2. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  3. 关于使用python logging模块的几点总结

    关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...

  4. python高级-模块(14)

    一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...

  5. 转载: Python os 模块的功能以及子函数介绍

    原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...

  6. 简单介绍python process模块

    在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...

  7. python io模块_python中的StringIO模块

    原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...

  8. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

  9. python导入模块有同名_Python:导入与函数同名的模块

    背景:第一次在SE上提问.我在 Python方面还很陌生,而且在编程方面也不是很有经验.我已经四处寻找,但我没有找到这个问题的答案,我非常感谢你的帮助. 我的问题是:如何导入与函数同名的模块? 具体来 ...

  10. python第三方模块—psutil模块

    系统基础信息采集模块作为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的服务质量及用户体验,另外获取设备的流量信息, ...

最新文章

  1. 大厂竟然都是这么做系统监控的,我们的方式太原始了~
  2. 2020 年最全 Python 面试题汇总 (一)
  3. 纠错——【Singleton array array(0.2) cannot be considered a valid collection.】
  4. 分布式缓存——缓存与数据库数据一致性
  5. Java架构师必看的10本书
  6. python生成requirements.txt的两种方法
  7. Command 模式 Step by Step
  8. OSChina 周五乱弹 —— 如何向妹子解释越位
  9. python tableview 自适应_iOS8下UITableView的contentsize自动变化问题
  10. 对象 'dbo.xxx' 不存在,或对此操作无效。为表创建触发器,为什么提示对象不存在?
  11. 【日常】ICS的lab7攻略和最近生活的吐槽
  12. 学习笔记——meta analysis
  13. 关于股票除权复权,前复权、后复权、不复权
  14. 银河麒麟Kydroid1.0新品正式发布--助力安可产业生态建设
  15. 渣土车识别检测系统-yolov5
  16. 计算机辅助程序英语,计算机辅助学习英语单词分组的设计
  17. Java添加水印(图片水印,文字水印)
  18. 【资源分享】综合性的导航网站
  19. Openjudge:奥运奖牌计数
  20. foxmail显示无法登陆到发信服务器,foxmail 无法发信,收信正常。

热门文章

  1. 《用Python进行自然语言处理》第6章 学习分类文本
  2. python内置函数:iter、enumerate和next
  3. 2021世界人工智能大会最高奖项——卓越人工智能引领者奖(Super AI Leader,简称SAIL奖)在大会开幕式揭晓...
  4. Facebook爆锤深度度量学习:该领域13年来并无进展!网友:沧海横流,方显英雄本色...
  5. MIT重新发明飞机:无需燃料,每秒万米喷射带你上天 | Nature封面
  6. 干货|120页精华PPT详解工业机器人本体设计运算及仿真
  7. 全文详解:「深度学习」如何协助处理医疗中的「数据难题」
  8. 程序员的生活就是这么朴实无华,且没钱
  9. 扎心!程序员旅行却只能紧紧抱着电脑加班?
  10. 用Java实现Stream流处理中的滑窗