1. 在图片上添加文本
在 Pillow 中使用模块 ImageDraw
来在图片上添加文本,它提供了方法 text()
用于在指定坐标显示文本。
简单的文本添加
from PIL import ImageDraw, ImageFont
# 创建绘图对象
draw = ImageDraw.Draw(image)
# 在图片上添加文本
text = "文本示例"
draw.text((50, 50), text, fill="white")
# 保存包含文本的图片
image.save("text_example.jpg")
在这个例子中,文本 "文本示例"
被添加到坐标 (50, 50)
。参数 fill
定义文本颜色,可以用字符串 ("white"
, "black"
) 或 RGB 格式 ((255, 255, 255)
) 指定。
设置文本字体
默认情况下,Pillow 使用标准字体。要选择其他字体并设置其大小,可以使用 ImageFont.truetype()
。确保字体文件在系统中可用。
# 加载字体
font = ImageFont.truetype("arial.ttf", 36)
# 使用自定义字体添加文本
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
这里我们使用了字体 arial.ttf
和大小为 36 像素。如果没有所需字体,可以下载并提供字体文件路径。
2. 添加水印
水印是一种半透明的文本或图片,叠加在照片上以保护版权。可以添加 logo 或作者信息。在 Pillow 中可以创建简单的文本水印。
文本水印
# 创建绘图对象
draw = ImageDraw.Draw(image)
# 水印文本和字体
watermark_text = "© 2023 我的公司"
font = ImageFont.truetype("arial.ttf", 24)
# 定义水印位置的坐标
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10
# 在右下角添加水印
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
在本例中,文本水印被添加到图片右下角。我们计算 x
和 y
,使水印稍微偏离图片边缘。
3. 添加图形元素
除了文本,Pillow 还允许绘制基本的图形元素,如线条、矩形、圆形和椭圆。对于创建边框、高亮区域以及添加几何形状很有用。
绘制线条
使用方法 line()
绘制线条,需传递线条的起点和终点坐标。
# 绘制从左上角到右下角的线条
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
这段代码绘制了一条红色线条,沿对角线从左上角到右下角通过图片。
绘制矩形
矩形可以通过方法 rectangle()
绘制,它接受左上角和右下角的坐标。
# 绘制一个矩形
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
这里创建了一个蓝色边框的矩形,线条宽度为 3 像素。你也可以使用参数 fill
来填充矩形颜色。
绘制圆形和椭圆
方法 ellipse()
可以绘制圆形和椭圆。要绘制圆形,宽度和高度的尺寸需相同。
# 绘制一个圆形
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
这个例子创建了一个以 (200, 200)
为中心的圆形。如果设置不同的宽度和高度,就会得到椭圆形。
绘制多边形
使用方法 polygon()
绘制多边形,需传递多边形顶点的坐标。
# 绘制一个三角形
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
这段代码绘制了一个填充为橙色,边框为紫色的三角形。通过传递顶点的坐标,你可以创建任意形状的多边形。
4. 示例
创建文本与图形结合的作品示例
综合使用前面提到的内容,创建一个包含文本、水印和图形元素的图片。
from PIL import Image, ImageDraw, ImageFont
# 加载图片
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)
# 添加文本
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "演示文本", font=font, fill="yellow")
# 在右下角添加水印
watermark_text = "© 2023 我的公司"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))
# 绘制线条、矩形和圆形
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
# 保存结果
image.save("final_composition_example.jpg")
这个例子创建了一个包含文本、水印和多个图形元素(线条、矩形和圆形)的图片。这种组合可以用于演示、博客以及创建专业设计的图片。
实际应用
- 标注和保护图片: 水印可以保护图片不被未经授权使用,而文本可以添加作者或公司信息。
- 为社交媒体准备图片: 添加文本和图形可以为图片提供更多信息,适合发布到社交媒体。
- 信息图表与数据可视化: 使用线条和图形等元素可以创建简单的图表和示意图,这使得 Pillow 在创建信息图表时非常有用。
GO TO FULL VERSION