欢迎访问宙启技术站
智能推送

Python中的图形函数及其用法

发布时间:2023-06-02 13:13:14

Python中有许多图形函数,主要用于绘制2D或3D图形,如直线、曲线、矩形、多边形、椭圆、圆、图像等等。下面将介绍一些常用的图形函数及其用法。

1. 点函数:用于绘制像素点,可用于制作简单的位图或点图。其语法格式为:

draw.point(xy, fill=None)

其中,xy表示点的坐标,fill表示点的填充色,默认为None,即不填充。

示例代码:

from PIL import Image, ImageDraw

# 新建一张画布
img = Image.new("RGB", (400, 400), (255, 255, 255))
# 新建一个画笔
draw = ImageDraw.Draw(img)

# 绘制一个红色点,坐标为(10,10)
draw.point((10, 10), fill=(255, 0, 0))

# 显示图片
img.show()

2. 直线函数:用于绘制直线,其语法格式为:

draw.line(xy, fill=None, width=0)

其中,xy表示线段的起点和终点坐标,fill表示线段的颜色,默认为None,即黑色;width表示线条宽度,默认为0,即单像素线条。

示例代码:

from PIL import Image, ImageDraw

# 新建一张画布
img = Image.new("RGB", (400, 400), (255, 255, 255))
# 新建一个画笔
draw = ImageDraw.Draw(img)

# 绘制一条蓝色直线,起点(10, 10),终点(100, 100),线宽为3像素
draw.line((10, 10, 100, 100), fill=(0, 0, 255), width=3)

# 显示图片
img.show()

3. 矩形函数:用于绘制矩形,其语法格式为:

draw.rectangle(xy, fill=None, outline=None, width=0)

其中,xy表示矩形的左上角和右下角坐标,fill表示矩形的填充色,默认为None,即不填充;outline表示矩形的边框颜色,默认为None,即不绘制边框;width表示矩形边框宽度,默认为0,即不绘制边框。

示例代码:

from PIL import Image, ImageDraw

# 新建一张画布
img = Image.new("RGB", (400, 400), (255, 255, 255))
# 新建一个画笔
draw = ImageDraw.Draw(img)

# 绘制一个黄色矩形,左上角坐标(50, 50),右下角坐标(150, 150),边框宽度为3像素
draw.rectangle((50, 50, 150, 150), fill=(255, 255, 0), outline=(0, 0, 0), width=3)

# 显示图片
img.show()

4. 椭圆函数:用于绘制椭圆或圆形,其语法格式为:

draw.ellipse(xy, fill=None, outline=None, width=0)

其中,xy表示椭圆的外接矩形的左上角和右下角坐标,即椭圆的左上角和右下角坐标可以由外接矩形计算出来;fill表示椭圆的填充色,默认为None,即不填充;outline表示椭圆的边框颜色,默认为None,即不绘制边框;width表示椭圆边框宽度,默认为0,即不绘制边框。

示例代码:

from PIL import Image, ImageDraw

# 新建一张画布
img = Image.new("RGB", (400, 400), (255, 255, 255))
# 新建一个画笔
draw = ImageDraw.Draw(img)

# 绘制一个绿色椭圆,外接矩形左上角坐标(50, 50),右下角坐标(150, 150),边框宽度为3像素
draw.ellipse((50, 50, 150, 150), fill=(0, 255, 0), outline=(0, 0, 0), width=3)

# 绘制一个红色圆,外接矩形左上角坐标(200, 100),右下角坐标(300, 200),边框宽度为2像素
draw.ellipse((200, 100, 300, 200), fill=(255, 0, 0), outline=(0, 0, 0), width=2)

# 显示图片
img.show()

5. 文本函数:用于插入文本,其语法格式为:

draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align='left')

其中,xy表示文本的左上角坐标;text表示要插入的文本;fill表示文本的颜色,默认为None,即黑色;font表示文本的字体,默认为系统字体,可以通过PIL.ImageFont.truetype()函数指定具体字体;anchor表示文本锚点位置,默认为左上角,可选参数包括("left", "center", "right", "top", "middle", "bottom");spacing表示文本行间距,默认为0;align表示文本对齐方式,默认为左对齐,可选参数包括('left', 'center', 'right')。

示例代码:

from PIL import Image, ImageDraw, ImageFont

# 新建一张画布
img = Image.new("RGB", (400, 400), (255, 255, 255))
# 新建一个画笔
draw = ImageDraw.Draw(img)

# 指定字体和字号
font = ImageFont.truetype("arial.ttf", 36)

# 在画布上插入一行红色文本
draw.text((50, 50), "Hello, World!", fill=(255, 0, 0), font=font)

# 在画布上插入一行蓝色文本,字体为宋体,字号为24,居中对齐
font = ImageFont.truetype("simsun.ttc", 24)
draw.text((200, 200), "你好,世界!", fill=(0, 0, 255), font=font, anchor="middle", align="center")

# 显示图片
img.show()

除了上述图形函数,Pillow图像处理库中还有许多其他的图形函数可供使用,具体用法可以参考官方文档。