%matplotlib inline
from PIL import Image, ImageDraw, ImageFont
fname = r'D:\fineImage\无名\thO3CXS0S3.jpg'
画直线
draw.line(xy, fill=None, width=0)
Draw a line, or a connected sequence of line segments
im = Image.open(fname)
print(im.size)
draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=28)
draw.line((im.size[1], 0) + (0, im.size[0]), fill=200)
im.show()
del draw
(255, 213)
添加对角线
draw.arc(xy, start, end, fill=None)
含义:在给定的区域内,在开始和结束角度之间绘制一条弧(圆的一部分,弧都是按照顺时针方向绘制的)。fill
代表颜色。参数 xy
是需要设置一个区域,此处使用 4 元组,包含了区域的左上角和右下角两个点的坐标。
draw = ImageDraw.Draw(im)
draw.arc((0, 0, 200, 200), 0, 90, fill=222) # 圆
draw.arc((200, 200, 400, 500), 0, -90, fill=222) # 椭圆
draw.arc((200, 200, 300, 300), -90, 0, fill=222) # 圆
im.show()
del draw
Pieslice
draw.pieslice(xy, start, end, fill=None, outline=None)
和方法 arc()
一样,但是在指定区域内结束点和中心点之间绘制直线。
fill
给定 pieslice 内部的颜色。
draw = ImageDraw.Draw(im)
draw.pieslice((0,0,200,200),0,90,fill = 222)#扇形
draw.pieslice((200,200,400,500),0,-90,fill = 222)#椭圆扇形
draw.pieslice((200,200,300,300),-90,0,fill = 222)#圆扇形
im.show()
del draw
Chord
draw.chord(xy, start, end, fill=None, outline=None)
含义:和方法 arc()
一样,但是使用直线连接起始点。outline
给定弦轮廓的颜色。fill
给定弦内部的颜色。
draw = ImageDraw.Draw(im)
draw.chord((0,0,200,200),0,90,fill=128,outline=222)
im.show()
del draw
Ellipse
draw.ellipse(xy, fill=None, outline=None)
含义:在给定的区域绘制一个椭圆形。outline
给定椭圆形轮廓的颜色。fill
给定椭圆形内部的颜色。
draw = ImageDraw.Draw(im)
draw.ellipse((0,0,200,200),fill=123)
draw.ellipse((200,200,300,400),fill=123)
im.show()
del draw
Polygon
draw.polygon(xy, fill=None, outline=None)
含义:绘制一个多边形。多边形轮廓由给定坐标之间的直线组成,在最后一个坐标和第一个坐标间增加了一条直线,形成多边形。
坐标列表是包含 2 元组 [(x,y),…]
或者数字 [x,y,…]
的任何序列对象。它最少包括 3 个坐标值。fill
给定多边形内部的颜色。
draw = ImageDraw.Draw(im)
draw.polygon([(0,0),(100,50),(50,100)],fill=123)
draw.polygon([0,20,50,90,100,300,200,80],fill=222)
im.show()
del draw
Rectangle
draw.rectangle(xy, fill=None, outline=None)
含义:绘制一个长边形。变量box是包含 2 元组 [(x,y),…]
或者数 字[x,y,…]
的任何序列对象。它应该包括 2 个坐标值。
注意:当长方形没有没有被填充时,第二个坐标对定义了一个长方形外面的点。fill
给定长边形内部的颜色。
draw = ImageDraw.Draw(im)
draw.rectangle([(0,0),(100,120)],fill=123)
draw.rectangle((120,130,200,180),fill=222)
draw.rectangle([200,200,300,400],fill=150)
im.show()
del draw
Bitmap
draw.bitmap(xy, bitmap, fill=None)
含义:在给定的区域里绘制 bitmap
所对应的位图,非零部分使用变量 fill
的值来填充。变量 bitmap
位图应该是一个有效的透明模板(模式为“1”)或者蒙版(模式为“L”或者“RGBA”)。
这个方法与 Image.paste(xy, color, bitmap)
有相同的功能。
im1 = Image.open('/Users/ly/Desktop/Python/py-test/image.jpg')
im2 = Image.open('/Users/ly/Desktop/Python/py-test/image3.png')
im = im2.resize((80,100),Image.ANTIALIAS)
print(im.size)
r,g,b = im.split()
draw = ImageDraw.Draw(im1)
draw.bitmap((0,0),r,fill=111)
draw.bitmap((80,100),g,fill=(0,255,0))
draw.bitmap((160,200),b,fill=(0,0,255))
im1.show()
del draw
来源:勇不言弃92。
网友评论