求助:如何读取Excel数据并为同名图片添加对应专属文本
问题:为对应图片添加Excel中的独特文本内容
我有一个包含数据的Excel文件,希望将其中的数据写入与该Excel文件同名的图片中。现有如下Python代码,但该代码会为所有图片添加相同的文本,我需要实现为每张图片添加对应独特文本的功能。
原代码:
from PIL import Image,ImageDraw,ImageFont import glob import os images=glob.glob("E:\Images/*.jpg") for img in images: images=Image.open(img) draw=ImageDraw.Draw(images) font=ImageFont.load_default() text=" Sensor Longitude Sensor Latitude" draw.text((0,240),text,(250,250,250),font=font) images.save(img)
解决方案
实现思路
- 读取Excel数据,建立图片文件名与对应文本的映射关系
- 遍历图片时,根据当前图片的文件名匹配对应的文本内容
- 将匹配到的独特文本绘制到对应图片上
修改后的代码
首先安装所需依赖库:
pip install pandas openpyxl pillow
完整代码:
from PIL import Image, ImageDraw, ImageFont import glob import os import pandas as pd # 读取Excel数据:假设Excel包含两列,'图片文件名'存xxx.jpg,'对应文本'存要添加的内容 excel_path = "你的Excel文件路径.xlsx" df = pd.read_excel(excel_path, engine="openpyxl") # 转成字典,方便通过文件名快速查找对应文本 text_mapping = df.set_index('图片文件名')['对应文本'].to_dict() # 获取所有目标图片路径 image_paths = glob.glob(r"E:\Images/*.jpg") # 处理每张图片 for path in image_paths: # 提取图片的文件名(不含路径) filename = os.path.basename(path) # 获取对应文本,无匹配时用默认值 current_text = text_mapping.get(filename, "无对应数据") # 打开图片并准备绘制 img = Image.open(path) draw = ImageDraw.Draw(img) font = ImageFont.load_default() # 绘制文本(位置、颜色可根据需求调整) draw.text((0, 240), current_text, (250, 250, 250), font=font) # 保存修改后的图片 img.save(path)
关键说明
- 确保Excel里的
图片文件名列和图片的实际文件名完全一致(包括后缀,比如.jpg) os.path.basename()用于从完整路径中提取纯文件名,保证和Excel数据的匹配性text_mapping.get()方法可以避免因图片无对应数据导致的报错,同时设置默认文本
内容的提问来源于stack exchange,提问作者yahya javed
相关产品推荐
相关产品推荐

