python手记(四):pillow(四) ImageDraw模块 图片绘制(图片上自定义绘制)

人生不易且无趣,一起来找点乐子吧。欢迎评论,和文章无关的也可以。

 

 

 

这次说下ImageDraw module,其实从名字上就可以看出来,这个模块的功能是什么。就是在图片上绘制一些东西,比如文字,简单图形啊什么的。

下面我们就来看看模块下的几个方法的运用。

这次换张图片:

首先,如果我们想要对图片进行操作,我们先要得到他的对象,然后再调用方法。Draw方法,返回ImageDraw对象。

 

ImageDraw.Draw():

方法要吞掉一个Image对象,返回ImageDraw对象

    im = Image.open('5.jpg')

    draw = ImageDraw.Draw(im)#mode 默认为im.mode

类似于这个样子,draw有两个参数,除此外,还有mode,默认情况和im.mode相同,如果想转变,改就是了。

draw就是我们获得的对象。就可以调用下面的方法进行处理了。

 

line(xy, fill):

望文生义,划线。xy是坐标序列,列表,元祖等都可以,只要是序列类型皆可。而且数量不限。比如【0,0,10,20,30,50,70,100】,他就会分别从(0,0),(10,20),(30,50),(70,100)间划线。

fill参数是线的颜色。

def line():
    im = Image.open('5.jpg')

    draw = ImageDraw.Draw(im)#mode 默认为im.mode
    draw.line((0, 0)+im.size, fill=120)
    draw.line((0, im.size[1], im.size[0], 0), fill=120)

    im.save('line.jpg')
    im.close()

来看这个,参数是个tuple,第一条线是从图片的左上角到右下角,第二条线是从左下,到右上。所以执行结果也就是在图片上打个大花叉。

 

text(xy, text, fill, font, spacing, direction):

在图片上绘制文字,这种功能随便的手机编辑一下就是了哈,这里我们不讨论他的功能实用性。只是单纯的学习。

xy是文字左上角起始位置,text是待编辑文字,fill文字颜色。font是个ImageFont的实例,这个我们后面去讲,spacing是字体间距,direction参数是排列的方向,参数值有rtl,ttb两种。不好记?很好记,right to left, top to button。开头缩写而已。(整的那么高大上!!!)

 

我们再说下这个:

arc(xy,start,end,fill):

这个方法是画圆,xy需要给个box。比如在像素点(0,0)和(100,100)之间画圆。start是初始角度,0度为正右方。end当然就是结束角度,不过注意,画圆方向为顺时针,fill同上。来看个例子:

def text():
    base = Image.open('5.jpg').convert('RGBA')

    d = ImageDraw.Draw(base)
    d.text((10, 10), 'Hello\nworld', fill=(255, 255, 255, 0))#font是个imagefont实例 spacing字体间距 direction rtl ttb
    d.text((10, 60), 'World', fill=(255, 255, 255, 255))
    d.arc([60,60,100,100],0,270,fill='red')#box, start angle, end angle, fill color
    base.save('txt.png')
    base.close()

 

写了个hello word,画了三分之一圆。

 

chord(xy, start, end, fill, outline):

这个方法和arc功能相同,outline是划线颜色,而fill是填充颜色。与arc的区别是,画完图之后,会将末位点和起始点连接起来。

def chord():#和弦
    base = Image.open('5.jpg').convert('RGBA')
    d = ImageDraw.Draw(base)
    d.chord([60,60,120,100],0,270,fill='blue', outline='yellow')
    base.save('chrod.png')
    base.close()

至于chord的含义,我不太懂,有和弦、基调的意思。不知具体想要表达的意思,估计是链接吧,藕断丝连?(什么鬼!!!)

无妨:

 

pieslice():

参数和功能都和chord一样,区别在于最后将末位点与起始点连接到中心:

 

ellipse()

很简单,就是画椭圆嘛。参数和画圆的都一样,而且通过arc也可以实现相同的功能,直接看下效果吧。

 

rectangle(xy,fill,outline)

功能明确,参数清晰是吧。都不需要过脑子的(也可能是根本就没有),xy给出rectangle的左上和右下的像素点坐标,fill填充,outline是pen color。

def rectangle():
    base = Image.open('5.jpg').convert('RGBA')
    d = ImageDraw.Draw(base)
    d.rectangle([60,60,120,80],fill='red',outline='white')
    base.save('rectangle.png')
    base.close()

 

polygon(xyfilloutline)

polygon,多边形。xy又是个像素点坐标的序列。我们随便给几个点:

def polygon():
    base = Image.open('5.jpg').convert('RGBA')
    d = ImageDraw.Draw(base)
    d.polygon([60,60,100,60,130,80,80,150],fill='white',)
    base.save('polygon.png')
    base.close()

 

point(xyfill)

这个有趣,画点点。参数没什么区别。直接看看例子吧:

def point():
    base = Image.open('5.jpg').convert('RGBA')
    d = ImageDraw.Draw(base)
    d.point([60,60,62,60,64,60,66,60,68,60,70,60],fill='white')
    base.save('point.png')
    base.close()

横着一排点了几个点,fill是点点颜色:

好小,手动指明。哈哈.......

 

ok,这个模块差不多就这样吧,还有几个方法的开发在测试阶段,但是功能也高级不到哪去。就这样了,拜。

 

 

 

后记:

括号里的内容是第二次审看添加的内容,旨在您阅读时引起极大的舒适。别人怎么看你不重要,你怎么看你也不重要。重要的是你怎么看别人怎么看你,别管他,做你就好。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值