其中,我们只需要修改获取调整器的代码就可以了,获取其它调制器的代码我注释了 。然后看看效果图:
文章插图
这种不伤大雅的工作,让我唐尼叔做再适合不过了 。
另外再讲一个调节亮度的函数,但是这个函数是Image中的函数point(),而不是ImageEnhance的 。该函数传入一个参数,使用方法和Image.eval()类似,使用示例如下:
from PIL import Image# 打开图像im1 = Image.open('gtx.jpg')# 变暗操作im2 = im1.point(lambda x:x*0.5)# 变量操作im3 = im1.point(lambda x:x*1.5)# 获取原图大小w, h = im1.size# 创建一个原图大小3倍的图片img = Image.new("RGB", (w*3, h))# 将减弱的图片放在最左边img.paste(im2, (0, 0))# 将原图放在中间img.paste(im1, (w, 0))# 将增强后的图片放在最右边img.paste(im3, (w*2, 0))# 显示图片img.show()12
效果图如下:文章插图
五、ImageDraw模块该模块提供了许多绘制2D图像的功能,我们可以通过绘制获取一个全新的图像,也可以在原有的图像上进行绘制 。在我们使用该模块进行绘制时,我们需要先获取ImageDraw.Draw对象,获取方式如下:
from PIL import ImageDraw# 构造函数中,im为一个Image对象drawer = ImageDraw.Draw(im)1
我们获取ImageDraw.Draw对象后就可以进行相应的绘制了 。5.1、绘制简单形状在绘制之前,我们先创建一个空白的图片:
from PIL import Image, ImageDraw# 创建一个300*300的白色图片im = Image.new("RGB", (300, 300), "white")# 获取ImageDraw.Draw对象drawer = ImageDraw.Draw(im)1
后续的绘制都可以使用对象drawer绘制 。(1)绘制直线
"""xy:起点坐标和终点坐标(x1, y1, x2, y2)fill:填充色 。"red"、"blue"...width:轮廓粗细joint:连接方式,可以是曲线"""line(xy, fill, width, joint)
# 绘制直线drawer.line((50, 50, 150, 150), fill='green',width=2)1
(2)绘制矩形"""xy:左上角坐标和右下角坐标(x1, y1, x2, y2)fill:填充色 。"red"、"blue"...outline:轮廓色 。同上width:轮廓粗细"""rectangle(xy, fill, outline, width)# 使用示例drawer.rectangle((50, 50, 150, 150), fill='green', outline='red', width=3)1
(3)绘制圆弧"""xy:包含圆弧所在圆的矩形的左上角坐标和右下角坐标(x1, y1, x2, y2)start:起始角度end:终止角度fill:填充色 。"red"、"blue"...width:轮廓粗细"""arc(xy, start, end, fill, width)# 使用示例drawer.arc((50, 50, 150, 150), start=0, end=90, fill='green', width=3)1
对于xy参数的解释如图所示:文章插图
(4)绘制椭圆
"""xy:包含椭圆(或圆)的矩形的左上角坐标和右下角坐标(x1, y1, x2, y2)fill:填充色 。"red"、"blue"...outline:轮廓颜色width:轮廓粗细"""ellipse(xy, fill, outline, width)# 使用示例drawer.ellipse((50, 50, 150, 150),fill='green', outline='red', width=3)12
(5)绘制弦"""xy:弦所在椭圆的矩形的左上角坐标和右下角坐标(x1, y1, x2, y2)start:开始角度end:终点角度fill:填充色 。"red"、"blue"...outline:轮廓颜色width:轮廓粗细"""chord(xy, start, end, fill, outline, width)
# 使用示例drawer.chord((50, 50, 150, 150),start=0, end=90, fill='green', outline='red', width=3)12
(6)绘制扇形"""xy:扇形所在椭圆的矩形的左上角坐标和右下角坐标(x1, y1, x2, y2)start:开始角度end:终点角度fill:填充色 。"red"、"blue"...outline:轮廓颜色width:轮廓粗细"""pieslice(xy, start, end, fill, outline, width)
# 使用示例drawer.pieslice((50, 50, 150, 150),start=0, end=90, fill='green', outline='red', width=3)1
(7)绘制多边形"""xy:多边形各个点坐标的元组/列表(x1, y1, x2, y2)fill:填充色 。"red"、"blue"...outline:轮廓颜色"""pieslice(xy, fill, outline)
# 使用示例drawer.polygon((50, 50, 150, 150, 150, 200, 200, 250, 50, 50), fill='green', outline='red')1
(8)绘制点"""xy:点的坐标fill:填充色 。"red"、"blue"..."""point(xy, fill)# 使用示例drawer.point((100, 100), fill='black')1
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 茶的历史茶字起源,茶叶茶字的由来和历史演变的介绍
- linux下开发基于.net的三维绘图程序
- 春节关于茶的习俗,蒙舍蛮的品饮习俗
- Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
- 茶叶水浇花好吗,茶叶渣的用途
- 附代码 什么是Python的迭代器和生成器?
- NLP中的文本分析和特征工程
- 山东取暖费发放标准是怎样的?
- 三大平原中面积最大的是什么?
- 《大王饶命》的吕小鱼结局是什么?