You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Spyder控制台实现Python图片加载后动态添加文本?

当然可以实现!咱们用Pillow(PIL)处理图片和文本,搭配matplotlib在Spyder控制台里完成需求,完全能达到你想要的效果。下面是完整的实现方案,我会一步步解释:

实现步骤与代码

1. 先安装依赖库

打开Spyder控制台,运行以下命令安装需要的工具包:

pip install pillow matplotlib

2. 完整可运行代码

from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt

# 替换成你自己的图片路径
image_path = "your_image.jpg"
# 加载图片并转为RGB格式(避免透明通道问题)
img = Image.open(image_path).convert("RGB")

# 显示初始图片(非阻塞模式,不卡住控制台)
plt.figure("Image with Text")
plt.imshow(img)
plt.axis('off')  # 隐藏坐标轴,让图片显示更干净
plt.show(block=False)

# 从控制台获取用户输入的文本
user_text = input("请输入要显示在图片上的文本:")

# 初始化绘图对象,准备绘制文本
draw = ImageDraw.Draw(img)
# 设置字体:优先用指定字体,找不到就用系统默认
try:
    # Windows下可以用微软雅黑,其他系统可以替换成本地字体路径,比如"/Library/Fonts/Arial.ttf"
    font = ImageFont.truetype("msyh.ttc", 40)
except:
    font = ImageFont.load_default(size=40)

# 自定义文本的位置和颜色
text_position = (50, 50)  # 左上角偏移50像素的位置,可自行调整
text_color = (255, 255, 255)  # 白色文本,也可以换成(0,0,0)黑色或其他RGB值

# 在图片上绘制文本
draw.text(text_position, user_text, font=font, fill=text_color)

# 更新显示带文本的图片
plt.clf()  # 清空之前的图片显示
plt.imshow(img)
plt.axis('off')
plt.show(block=True)  # 阻塞模式,直到关闭图片窗口才结束程序

# 可选:保存修改后的图片到本地
img.save("image_with_text.jpg")

关键细节说明

  • 非阻塞显示:用plt.show(block=False)是核心,这样图片窗口弹出后,控制台依然能接受输入,不会出现"图片卡住控制台没法输入"的问题。
  • 字体容错:做了 fallback 处理,避免因为找不到指定字体导致程序报错,适配不同操作系统。
  • 自定义调整:你可以根据需求修改文本的位置、大小、颜色,比如把text_position改成(img.width//2, img.height//2)让文本居中,或者调整字体大小。

Spyder使用注意事项

  • 检查Spyder的图形后端设置:在工具>偏好设置>IPython控制台>图形里,把后端设为"自动"或者"Qt5Agg",确保图片能正常弹出显示。
  • 运行代码后,先弹出初始图片,控制台会出现输入提示,输入文本回车后,图片窗口会自动更新为带文本的版本。

内容的提问来源于stack exchange,提问作者newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:54:32