Python02-图片添加文字

Python02-图片添加文字

1-代码如下

from PIL import Image, ImageDraw, ImageFont
import os

def add_text_to_image(image_path, output_path, text, position, font_path, font_size, text_color):
    # 打开图像
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    
    # 设置字体
    font = ImageFont.truetype(font_path, font_size)
    
    # 计算文字大小
    text_bbox = draw.textbbox((0, 0), text, font=font)
    text_width = text_bbox[2] - text_bbox[0]
    text_height = text_bbox[3] - text_bbox[1]
    
    # 计算位置
    x = image.width - text_width - position[0]
    y = image.height - text_height - position[1]
    
    # 添加文字
    draw.text((x, y), text, font=font, fill=text_color)
    
    # 保存图像
    image.save(output_path)

def process_images(input_folder, output_folder, font_path, font_size, text_color, position):
    # 确保输出文件夹存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 遍历输入文件夹中的所有文件
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff')):
            image_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, filename)
            text = os.path.splitext(filename)[0]  # 使用文件名作为文字
            add_text_to_image(image_path, output_path, text, position, font_path, font_size, text_color)
            print(f"Processed: {filename}")

if __name__ == "__main__":
    input_folder = 'path/to/input/folder'  # 输入文件夹路径
    output_folder = 'path/to/output/folder'  # 输出文件夹路径
    font_path = 'path/to/font.ttf'  # 字体文件路径
    font_size = 20  # 字体大小
    text_color = (255, 255, 255)  # 文字颜色,白色
    position = (10, 10)  # 右下角位置偏移
    
    process_images(input_folder, output_folder, font_path, font_size, text_color, position)

说明

  1. 计算文字大小

    • 使用 textbbox 方法来获取文字的边界框,然后计算文字的宽度和高度。
  2. 其他部分

    • 代码的其他部分保持不变,包括文件夹路径、字体文件路径、字体大小、文字颜色和位置偏移等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值