超全的Python图像处理讲解,小白也能懂( 四 )

其中,我们只需要修改获取调整器的代码就可以了,获取其它调制器的代码我注释了 。然后看看效果图:

超全的Python图像处理讲解,小白也能懂

文章插图
 
这种不伤大雅的工作,让我唐尼叔做再适合不过了 。
另外再讲一个调节亮度的函数,但是这个函数是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效果图如下:
超全的Python图像处理讲解,小白也能懂

文章插图
 
五、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参数的解释如图所示:
超全的Python图像处理讲解,小白也能懂

文章插图
 
(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


推荐阅读