python图像压缩函数 python压缩图片像素( 三 )


该区域可以做接下来的处理然后再粘贴回去 。
** 处理子区域然后粘贴回去 **
当往回粘贴时,区域的大小必须和参数匹配 。另外区域不能超出图像的边界 。然而原图像和区域的颜色模式无需匹配 。区域会自动转换 。
** 滚动图像 **
paste() 函数有个可选参数,接受一个掩码图像 。掩码中255表示指定位置为不透明,0表示粘贴的图像完全透明 , 中间的值表示不同级别的透明度 。
PIL允许分别操作多通道图像的每个通道,比如RGB图像 。split() 函数创建一个图像集合,每个图像包含一个通道 。merge() 函数接受一个颜色模式和一个图像元组,然后将它们合并为一个新的图像 。接下来的例子交换了一个RGB图像的三个通道 。
** 分离和合并图像通道 **
对于单通道图像,split() 函数返回图像本身 。如果想处理各个颜色通道 , 你可能需要先将图像转为RGB模式 。
resize() 函数接受一个元组,指定图像的新大小 。
rotate() 函数接受一个角度值,逆时针旋转 。
** 基本几何变换 **
图像旋转90度也可以使用 transpose() 函数 。transpose() 函数也可以水平或垂直翻转图像 。
** transpose **
transpose() 和 rotate() 函数在性能和结果上没有区别 。
更通用的图像变换函数为 transform()。
PIL可以转换图像的像素模式 。
** 转换颜色模式 **
PIL库支持从其他模式转为“L”或“RGB”模式,其他模式之间转换,则需要使用一个中间图像,通常是“RGB”图像 。
ImageFilter 模块包含多个预定义的图像增强过滤器用于 filter() 函数 。
** 应用过滤器 **
point() 函数用于操作图像的像素值 。该函数通常需要传入一个函数对象,用于操作图像的每个像素:
** 应用点操作 **
使用以上技术可以快速地对图像像素应用任何简单的表达式 。可以结合 point() 函数和 paste 函数修改图像 。
** 处理图像的各个通道 **
注意用于创建掩码图像的语法:
Python计算逻辑表达式采用短路方式,即:如果and运算符左侧为false,就不再计算and右侧的表达式,而且返回结果是表达式的结果 。比如 a and b 如果a为false则返回a , 如果a为true则返回b , 详见Python语法 。
对于更多高级的图像增强功能,可以使用 ImageEnhance 模块中的类 。
可以调整图像对比度、亮度、色彩平衡、锐度等 。
** 增强图像 **
PIL库包含对图像序列(动画格式)的基本支持 。支持的序列格式包括 FLI/FLC 、 GIF 和一些实验性的格式 。TIFF 文件也可以包含多个帧 。
当打开一个序列文件时,PIL库自动加载第一帧 。你可以使用 seek() 函数 tell() 函数在不同帧之间移动 。
** 读取序列 **
如例子中展示的,当序列到达结尾时 , 将抛出EOFError异常 。
注意当前版本的库中多数底层驱动只允许seek到下一帧 。如果想回到前面的帧,只能重新打开图像 。
以下迭代器类允许在for语句中循环遍历序列:
** 一个序列迭代器类 **
PIL库包含一些函数用于将图像、文本打印到Postscript打印机 。以下是一个简单的例子 。
** 打印到Postscript **
如前所述,可以使用 open() 函数打开图像文件 , 通常传入一个文件名作为参数:
如果打开成功,返回一个Image对象 , 否则抛出IOError异常 。
也可以使用一个file-like object代替文件名(暂可以理解为文件句柄) 。该对象必须实现read,seek , tell函数,必须以二进制模式打开 。
** 从文件句柄打开图像 **

推荐阅读