Python图片处理模块PIL(pillow)(4)
off999 2024-10-29 14:57 44 浏览 0 评论
Python图片处理模块PIL(pillow)(4)
转载自:https://blog.csdn.net/qq_20852429/article/details/79112595
(三)Image模块函数
16、 Point
定义1:im.point(table)? image
im.point(function) ? image
含义1:返回给定查找表对应的图像像素值的拷贝。变量table为图像的每个通道设置256个值。如果使用变量function,其对应函数应该有一个参数。这个函数将对每个像素值使用一次,结果表格将应用于图像的所有通道。
如果图像的模式为“I(整数)”或者“F(浮点)”,用户必须使用function方式,function必须按照下面的格式:
argument * scale+ offset
例如:
out = im.point(lambda i: i * 1.2 + 10)
用户可以省略变量scale和offset。
例子1:
from PIL import Image
im = Image.open("jing.png")
im_point = im.point(lambda x:x*1.3+5)
im_point.save("he.png")
注:图像im_point_fun比原图im01亮度增加了很多;因为lambda表达式中对原图的每个像素点的值都做了增加操作。
定义2:im.point(table,mode) ? image
im.point(function, mode) ? image
含义2:与定义1一样,但是它会为输出图像指定一个新的模式。这个方法可以一步将模式为“L”和“P”的图像转换为模式为“1”的图像。
例子2:
from PIL import Image
im = Image.open("jing.png")
r,g,b = im.split()
im_point1 = r.point(lambda x:x*1.3+5,"1")
print(im_point1.getpixel((0,0)))
im_point1.save("he1.png")
im_point2 = r.point(lambda x:0,"1")
im_point2.save("he2.png")
print(im_point2.getpixel((10,10)))
输出为:
0
图像im_point1为全白图
图像im_point2为全黑图
17、Putalpha
作用:对图像添加 alpha 层,即将给定通道拷贝到图像 alpha 层.
im.putalpha(alpha)
注意:图像 im 必须是 "RGBA",alpha 必须是 "L" 或 "1".
可以将一张与原图尺寸相同的图片写入到原图片的透明通道之中,但不会影响原图片的正常显示. 可用于信息隐藏. 在做信息隐藏时,需要原图具有透明通道.
如果原图没有透明通道,可以采用 PIL 的 im.convert 函数,转换为 "RGBA" 模式;同时确保要隐藏的信息图像为 "L" 或 "1" 模式.
如:
from PIL import Image
def hideImageInImage(im, alpha):
if im.mode != "RGBA":
im = im.convert("RGBA")
if alpha.mode != "L" and alpha.mode != "1":
alpha = alpha.convert("L")
im.putalpha(info)
return im
18、 Putdata
定义:im.putdata(data)
im.putdata(data, scale, offset)
含义:从sequence对象中拷贝数据到当前图像,从图像的左上角(0,0)位置开始。变量scale和offset用来调整sequence中的值:
pixel = value *scale + offset
如果变量scale忽略,则默认为1.0。如果变量offset忽略,则默认为0.0。
例子:
from PIL import Image
im =Image.open("jing.png")
r,g,b =im.split()
print(r.getpixel((0,0)))
print(r.getpixel((1,0)))
print(r.getpixel((2,0)))
print(r.getpixel((3,0)))
r.putdata([1,2,3,4])
print(r.getpixel((0,0)))
print(r.getpixel((1,0)))
print(r.getpixel((2,0)))
print(r.getpixel((3,0)))
输出:
10
6
2
4
19、 Putpalette
定义:im.putpalette(sequence)
含义:为“P”或者“L”图像增加一个调色板。对于“L”图像,它的模式将变化为“P”。调色板序列需要包含768项整数,每组三个值表示对应像素的红,绿和蓝。用户可以使用768个byte的字符串代替这个整数序列。
例子:
from PIL import Image
im =Image.open("jing.png")
r,g,b = im01.split()
print(r.mode)
r.putpalette([1,2,3])
print(r.mode)
输出:
'L'
'P'
20、 Putpixel
定义:im.putpixel(xy,colour)
含义:修改指定位置上的像素值。对于单通道图像,变量colour为一个数值;对于多通道图像,变量colour为一个元组。
注意:这个方法执行比较慢。如果是1.1.6版本,像素访问对象(参考load方法)提供了一个更快的方法修改图像。
如果用户要生成整幅图像,可以使用更有效的方法产生一个python list,然后使用方法putdata()将它拷贝到图像上去。对于更大的改变,使用方法paste或者ImageDraw模块。
例子:
from PIL import Image
im =Image.open("jing.png")
print(im.getpixel((0,0)))
im.putpixel((0,0),(1,2,3))
print(im.getpixel((0,0)))
输出:
(11, 113, 198)
(1, 2, 3)
21、 Quantize
定义:im.quantize(colors,**options) ? image
含义:(不赞成)使用给定的颜色将“L”或者“RGB”图像转换为“P”图像,返回新的图像。
新的代码中,使用有自适应的调色板的convert方法来代替:
out =im.convert("P", palette=Image.ADAPTIVE,colors=256)
22、 Resize
定义:im.resize(size) ? image im.resize(size, filter) ? image 含义:返回改变尺寸的图像的拷贝。变量size是所要求的尺寸,是一个二元组:(width, height)。 变量filter为NEAREST、BILINEAR、BICUBIC或者ANTIALIAS之一。如果忽略,或者图像模式为“1”或者“P”,该变量设置为NEAREST。 注意:在当前的版本中bilinear和bicubic滤波器不能很好地适应大比例的下采样(例如生成缩略图)。用户需要使用ANTIALIAS,除非速度比质量更重要。
23、 Rotate
定义:im.rotate(angle) ? image
im.rotate(angle,filter=NEAREST, expand=0) ? image
含义:返回一个按照给定角度顺时钟围绕图像中心旋转后的图像拷贝。
变量filter应该是NEAREST、BILINEAR或者BICUBIC之一。如果省略该变量,或者图像模式为“1”或者“P”,则默认为NEAREST。
变量expand,如果为true,表示输出图像足够大,可以装载旋转后的图像。如果为false或者缺省,则输出图像与输入图像尺寸一样大。
例子:
from PIL import Image
im = Image.open("jing.png")
im_30 = im.rotate(30)
im_30.save("he1.png")
im_31 = im.rotate(30,Image.BICUBIC,1)
im_31.save("he2.png")
注:im_30旋转30度大小不变,im_31旋转30度大小改变
24、 Save
定义:im.save(outfile,options…) im.save(outfile, format, options…) 含义:使用给定的文件名保存图像。如果变量format缺省,如果可能的话,则从文件名称的扩展名判断文件的格式。该方法返回为空。 关键字options为文件编写器提供一些额外的指令。如果编写器不能识别某个选项,它将忽略它。 用户可以使用文件对象代替文件名称。在这种情况下,用户必须指定文件格式。文件对象必须实现了seek()、tell()和write()方法,且其以二进制模式打开。 如果方法save()因为某些原因失败,这个方法将产生一个异常(通常为IOError异常)。如果发生了异常,该方法也有可能已经创建了文件,并向文件写入了一些数据。如果需要的话,用户的应用程序可以删除这个不完整的文件。
25、 Seek
定义:im.seek(frame)
含义:在给定的文件序列中查找指定的帧。如果查找超越了序列的末尾,则产生一个EOFError异常。当文件序列被打开时,PIL库自动指定到第0帧上。
注意:在当前的版本上,大多数序列格式只允许用户查找下一帧,不能跳跃式查找指定的帧。
例子:
from PIL import Image
im_gif = Image.open("xin.gif")
print(im_gif.mode)
im_gif.seek(2)
im_gif.save("he1.png")
im_gif.seek(8)
im_gif.save("he2.png")
输出:
'P'
注:通过上面的code,分别找到了第2帧和第8帧图像。
26、 Show
定义:im.show()
含义:显示一张图像。这个方法主要用于调试。
在Unix平台,这个方法将图像保存为临时的PPM文件,并且调用xv功能。
在widows中,它将图像保存为临时的BMP文件,并且使用标准的BMP显示功能显示它。
这个方法返回空。
例子:
from PIL import Image
im = Image.open("jing.png")
im.show()
27、 Split
定义:im.split() ? sequence
含义:返回当前图像各个通道组成的一个元组。例如,分离一个“RGB”图像将产生三个新的图像,分别对应原始图像的每个通道(红,绿,蓝)。
例子:
from PIL import Image
im = Image.open("jing.png")
r,g,b = im.split()
b.save("he.png")
print(b.getpixel((1,3)))
28、 Tell
定义:im.tell() ? integer
含义:返回当前帧所处位置,从0开始计算。
例子:
from PIL import Image
im_gif = Image.open("xin.gif")
print(im_gif.tell())
im_gif.seek(8)
print(im_gif.tell())
输出:
8
29、 Thumbnail
定义:im.thumbnail(size)
im.thumbnail(size, filter)
含义:修改当前图像,使其包含一个自身的缩略图,该缩略图尺寸不大于给定的尺寸。这个方法会计算一个合适的缩略图尺寸,使其符合当前图像的宽高比,调用方法draft()配置文件读取器,最后改变图像的尺寸。
变量filter应该是NEAREST、BILINEAR、BICUBIC或者ANTIALIAS之一。如果省略该变量,则默认为NEAREST。
注意:在当前PIL的版本中,滤波器bilinear和bicubic不能很好地适应缩略图产生。用户应该使用ANTIALIAS,图像质量最好。如果处理速度比图像质量更重要,可以选用其他滤波器。
这个方法在原图上进行修改。如果用户不想修改原图,可以使用方法copy()拷贝一个图像。这个方法返回空。
例子:
from PIL import Image
im = Image.open("jing.png")
im.thumbnail((10,10))
im.save("he.png")
注:已经为图像im01创建了不大于10x10的缩略图。
30、 Tobitmap
定义:im.tobitmap()? string 含义:返回转换为X11的bitmap图像。
31、 Transform
定义1:im.transform(size,method, data) ? image im.transform(size, method, data, filter) ? image 含义1:使用给定的尺寸生成一张新的图像,与原图有相同的模式,使用给定的转换方式将原图数据拷贝到新的图像中。 在当前的PIL版本中,参数method为EXTENT(裁剪出一个矩形区域),AFFINE(仿射变换),QUAD(将正方形转换为矩形),MESH(一个操作映射多个正方形)或者PERSPECTIVE。 变量filter定义了对原始图像中像素的滤波器。在当前的版本中,变量filter为NEAREST、BILINEAR、BICUBIC或者ANTIALIAS之一。如果忽略,或者图像模式为“1”或者“P”,该变量设置为NEAREST。 含义2:从图像中裁剪一个区域。 变量data为指定输入图像中两个坐标点的4元组(x0,y0,x1,y1)。输出图像为这两个坐标点之间像素的采样结果。例如,如果输入图像的(x0,y0)为输出图像的(0,0)点,(x1,y1)则与变量size一样。 这个方法可以用于在当前图像中裁剪,放大,缩小或者镜像一个任意的长方形。它比方法crop()稍慢,但是与resize操作一样快。 含义3:对当前的图像进行仿射变换,变换结果体现在给定尺寸的新图像中。 变量data是一个6元组(a,b,c,d,e,f),包含一个仿射变换矩阵的第一个两行。输出图像中的每一个像素(x,y),新值由输入图像的位置(ax+by+c, dx+ey+f)的像素产生,使用最接近的像素进行近似。 这个方法用于原始图像的缩放、转换、旋转和裁剪。 定义4:im.transform(size,QUAD, data) ? image im.transform(size, QUAD, data, filter) ? image 含义4:输入图像的一个四边形(通过四个角定义的区域)映射到给定尺寸的长方形。 变量data是一个8元组(x0,y0,x1,y1,x2,y2,x3,y3),它包括源四边形的左上,左下,右下和右上四个角。 含义5:与QUAD类似,但是变量data是目标长方形和对应源四边形的list。 定义6:im.transform(size,PERSPECTIVE, data) ? image im.transform(size, PERSPECTIVE, data, filter) ? image 含义6:对当前图像进行透视变换,产生给定尺寸的新图像。 变量data是一个8元组(a,b,c,d,e,f,g,h),包括一个透视变换的系数。对于输出图像中的每个像素点,新的值来自于输入图像的位置的(a x + b y + c)/(g x + h y + 1), (d x+ e y + f)/(g x + h y + 1)像素, 使用最接近的像素进行近似。 这个方法用于原始图像的2D透视。
32、 Transpose
定义:im.transpose(method)? image
含义:返回当前图像的翻转或者旋转的拷贝。
变量method的取值为:FLIP_LEFT_RIGHT,FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180,或者ROTATE_270。
例子:
from PIL import Image
im = Image.open("jing.png")
im = im01.transpose(Image.FLIP_LEFT_RIGHT)
注:图像im为图像im01的水平方向镜像。
33、 Verify
定义:im.verify()
含义:尝试判断文件是否损坏,实际上并没有对图像数据进行解析。如果这个方法发现了任何问题,它将产生对应的异常。这个方法只工作于刚打开的图像;如果图像已经被加载,该方法的结果将会是未定义的。如果用户在使用这个方法后需要加载图像,用户需要重新打开图像文件。
注意:这个方法不能捕获所有的错误;要捕获解码错误,用户必须加载整个图像。
例子:
from PIL import Image
im01 = Image.open("jing.png")
im01.verify()
注:没有任何输出,表示图像im01是没有损坏的
PIL用得比较多,看见一个总结就想保存下来~
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
