ImageDraw

作者: 水之心 | 来源:发表于2018-12-13 15:26 被阅读0次
%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

相关文章

网友评论

    本文标题:ImageDraw

    本文链接:https://www.haomeiwen.com/subject/nqhbhqtx.html