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

PIL库中的ImageDraw函数详解及绘制橡皮擦效果的示例

发布时间:2023-12-26 13:34:11

PIL(Python Imaging Library)是Python中常用的图像处理库之一。其中的ImageDraw模块提供了各种绘制图像的方法和函数。

ImageDraw模块的常用函数包括:

1. ImageDraw.Draw(image, mode=None):创建一个用于绘制在给定图像上的可绘制对象。

2. ImageDraw.draw_polygon(xy, fill=None, outline=None, width=0):绘制多边形。

- xy:表示多边形的坐标,为一个列表,每个元素为一个坐标点的元组。

- fill:填充颜色,默认为None。

- outline:边框颜色,默认为None。

- width:边框宽度,默认为0,表示填充整个多边形。

3. ImageDraw.draw_ellipse(xy, fill=None, outline=None, width=0):绘制椭圆。

- xy:表示椭圆外切矩形的左上角和右下角坐标,为一个元组。

- fill:填充颜色,默认为None。

- outline:边框颜色,默认为None。

- width:边框宽度,默认为0,表示填充整个椭圆。

4. ImageDraw.draw_rectangle(xy, fill=None, outline=None, width=0):绘制矩形。

- xy:表示矩形的左上角和右下角坐标,为一个元组。

- fill:填充颜色,默认为None。

- outline:边框颜色,默认为None。

- width:边框宽度,默认为0,表示填充整个矩形。

5. ImageDraw.draw_line(xy, fill=None, width=0):绘制直线。

- xy:表示直线的起点和终点坐标,为一个元组。

- fill:直线颜色,默认为None。

- width:直线宽度,默认为0。

下面给出一个绘制橡皮擦效果的示例程序,使用ImageDraw模块来实现:

from PIL import Image, ImageDraw

def erase(image_path, x, y, radius):
    # 打开图像
    image = Image.open(image_path)
    # 创建可绘制对象
    draw = ImageDraw.Draw(image)
    # 绘制橡皮擦效果,即绘制圆形区域并填充为白色
    draw.ellipse([(x - radius, y - radius), (x + radius, y + radius)], fill='white')
    # 保存结果
    image.save("result.jpg")
    # 显示结果
    image.show()

# 示例用法
image_path = "example.jpg"
x = 200  # 圆心横坐标
y = 200  # 圆心纵坐标
radius = 50  # 半径
erase(image_path, x, y, radius)

上述示例程序中,通过ImageDraw模块中的ellipse函数绘制了一个圆形区域,并将该区域填充为白色,从而实现了橡皮擦效果。传入的参数x、y和radius决定了圆形的位置和大小。最后,结果图像将保存为"result.jpg"并展示出来。