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