我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python PIL模块

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python PIL模块

http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-p_w_picpath-processing-library-introduced-the-p_w_picpath-module

http://onlypython.group.iteye.com/group/wiki/1371-python-graphics-library-pil-python-p_w_picpath-library-introduction

# -*-coding:utf-8 -*-
__author__ = 'Administrator'
from PIL import Image
from PIL import ImageFilter
from PIL import ImageEnhance

im = Image.open("C:/1.jpg")
print im.size, im.format, im.mode, im.info
# im.show() convert()可以用来转换色彩模式
# 设置拷贝区域, box变量是四元组(左,上,右,下)
box = (100, 100, 200, 200)
# 复制抠图 将im表示的图片对象拷贝到region中,大小(400*400),region其实也是p_w_picpath对象了。抠图
region = im.crop(box)
region = region.transpose(Image.ROTATE_180)  # 旋转方向
# 粘贴 母图.粘贴(子图,位置)
im.paste(region, box)
# 保存
im.save('C:/2.jpg')
# 分离三通道,红绿蓝
r, g, b = im.split()
# 保存查看之。直接调用show也可,但是windows不好用
r.save('C:/r.jpg')
# 调整图片大小
out = im.resize((128, 128))
# 图片逆时针旋转
out = im.rotate(45)
# 保存查看
out.save('C:/out.jpg')
# 各种翻转效果,镜面效果可以用transpose()预定义的旋转方式
reset = im.transpose(Image.FLIP_LEFT_RIGHT)  # 左右镜像
reset = im.transpose(Image.FLIP_TOP_BOTTOM)  # 上下镜像
reset = im.transpose(Image.ROTATE_270)

# 图像增强-滤镜filter
out = im.filter(ImageFilter.DETAIL)
out.save('C:/out3.jpg')
# 对每个点都做20%的增强
out = im.point(lambda i: i * 1.2)  # 注意这里用到一个匿名函数(那个可以把i的1.2倍返回的函数)
# 如上上边的那个例子,我们可以将一个RGB模式的图分离成三个通道的层
# 然后对一个通道进行加强或减弱操作,完成后我们又可以使用Merge将通道合并,从而改变图片的色调(冷暖色调的互换)等。
#### 点操作 #####
# img.point(function),这个function接受一个参数,且对图片中的每一个点执行这个函数,这个函数是一个匿名函数,在python之类的函数式编程语言中,可以使用
# lambda表达式来完成,如
# out = img.point(lambda i : i*1.2)#对每个点进行20%的加强
# 如果图片是“I”或者“F”模式,那么这个lambda必须使用这样的形式
# argument * scale + offset
# e.g
# out = img.point(lambda i: i*1.2 + 10)
#############
r = r.point(lambda i: i * 1.2)
g = g.point(lambda i: i * 0.7)
sexy = Image.merge('RGB', (r, g, b))
sexy.save("C:/sexy.png")
# 创建mask的语句:
mask = r.point(lambda i: i < 100 and 255)
# 该句可以用下句表示
# imout = im.point(lambda i: expression and 255)
# 如果expression为假则返回expression的值为0(因为and语句已经可以得出结果了),否则返回255。(mask参数用法:当为0时,保留当前值,255为使用paste进来的值,中间则用于transparency效果)
# 更高级的图片加强,可以使用ImageEnhance模块,其中包含了大量的预定义的图片加强方式。一旦有一个Image对象,
# 应用ImageEnhance对象就能快速地进行设置。 可以使用以下方法调整对比度、亮度、色平衡和锐利度。
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")
# 创建一个新的图片
# Image.new(mode, size)
# Image.new(mode, size, color)
# 层叠图片
# 层叠两个图片,img2和img2,alpha是一个介于[0,1]的浮点数,如果为0,效果为img1,如果为1.0,效果为img2。当然img1和img2的尺寸和模式必须相同。这个函数可以做出很漂亮的效果来,而图形的算术加减后边会说到。
# Image.blend(img1, img2, alpha)
# composite可以使用另外一个图片作为蒙板(mask),所有的这三张图片必须具备相同的尺寸,mask图片的模式可以为“1”,“L”,“RGBA”(关于模式请参看前一篇)
# Image.composite(img1, img2, mask)
# 转换图形模式
# 下面看一个比较牛的方法convert,这个方法可以将图片在不同的模式间进行转换,在将灰度图转换成二值图时,所有的非零值被设置为255(白色)。灰度图的转换方式采用的是这个算法:
# L = R*299/1000 + G*587/1000 + B*114/1000

# 透明通道的使用
# putalpha(alpha)
# 这个方法是一个神奇的方法,你可以将一个图片(与原图尺寸相同)写入到原图片的透明通道中,而不影响原图片的正常显示,可以用于信息隐藏哦。当然,前提是原
# 始图片有透明通道。不过就算不是也没有多大关系,因为有PIL提供的convert功能,可以把一个图片先转换成RGBA模式,然后把要隐藏的信息文件转成“L”或者“1”模
# 式,最后使用这个putalpha将其叠加。而在图片的使用方,只需要简单的抽取其中的透明通道就可以看到隐藏信息了,哈哈。

def hideInfoInImage(im, info):
    if im.mode != "RGBA":
        im = im.convert("RGBA")
    if info.mode != "L" and info.mode != "1":
        info = info.convert("L")
    im.putalpha(info)
    return im


# 测试之
if __name__ == "__main__":
    img = Image.open("green.png")
    band = Image.open("antelope_inhalf.jpg")

    img = hideInfoInImage(img, band)
    img.show()                       # 可以看到,原图片没有显式变化
    img.split()[3].show()            # 抽取出透明通道中的图片并显示


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python PIL模块

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python PIL模块

http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-p_w_picpath-processing-library-introduced-the-p_w_picp
2023-01-31

python-PIL模块画图

python中执行mysql遇到like 怎么办 ?​​sql = "SELECT * FROM T_ARTICLE WHERE title LIKE '%%%%%s%%%%'" % searchStr执行成功,print出SQL语句之后为
2023-01-31

python怎么导入pil模块

在Python中,可以使用`import`语句导入PIL模块。PIL(Python Imaging Library)是一个用于打开、编辑和保存多种图像文件格式的库。```pythonimport PIL```或者,可以使用`from`关键字
2023-08-15

Python使用PIL模块生成随机验证码

Python生成随机验证码,需要使用PIL模块,具体内容如下安装:pip3 install pillow基本使用 1. 创建图片from PIL import Image img = Image.new(mode='RGB', size=(
2022-06-04

python PIL模块与随机生成中文验证码

在这之前,你首先得了解Python中的PIL库。PIL是Python Imaging Library的简称,PIL是一个Python处理图片的库,提供了一系列模块和方法,比如:裁切,平移,旋转,改变尺寸等等。在PIL库中,任何一个图像都是用
2022-06-04

使用Python的PIL模块来进行图片对比

在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, 开个玩笑,当然是通过机器识别的,海量的图片只有机器识别才能做到。 那用pytho
2022-06-04

python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法

可能很多人遇到过这个错误,当使用setup.py安装python2.7图像处理模块PIL时,python默认会寻找电脑上以安装的vs2008.如果你没有安装vs2008,会出现Unable to find vcvarsall.bat错误。
2022-06-04

python模块:smtplib模块

1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默
2023-01-31

Python模块:time模块

time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一
2023-01-31

使用Python模块:struct模块

Python没有提供直接的将用户定义的数据类型和文件IO关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的)1)bytes、strbytes是Pyth
2023-01-31

Python模块

初步认识安装完python后,python自带一部分模块,自带的模块又称作内置模块。其中一部分模块在路径Lib下。(这里的文件夹可以看做包,可以把多个模块放进一个包里)从模块的来源来讲,可以分三种:内置模块、自定义模块(自己定义的)、第三方
2023-01-30

python-模块

一:模块的基本认识:内置模块内置模块是python自带的功能,在使用内置模块相应功能时,需要先导入再使用   第三方模块下载-->安装-->使用1.找到python所在的根目录-->再找到Scripts目录-->最后找到pip.exe2.把
2023-01-31

python - 模块

参考:https://www.cnblogs.com/nulige/p/6166205.html一、模块介绍Python Module(模块),就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。文件
2023-01-31

python模块学习----nmap模块

安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理
2023-01-31

python 模块

python的模块分为2种:1.标准库(不需要安装,直接导入就可以使用的)2.第三方库(必须要手动安装的)先来介绍2个标准库:sys和os#!/usr/bin/envpython#coding:utf-8__author__=www.py3
2023-01-30

python加密模块-hashlib模块

hashlib模块用于加密相关的操作,3.X里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法(sha比md5 更复杂、md5 不能反解)具体应用:用于网站防篡改。具体方法:
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录