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

如何在u字符串中使用变量?阿拉伯语方言文本图片写入问题

解决方法

首先明确:Python 3 里所有字符串默认都是 Unicode 类型,不需要手动加u''前缀——你之前用的f"{u'{text}'}"是错误写法,反而会导致问题。

直接修正两处错误即可:

  • 移除text()方法里多余的f"{u'{text}'}"写法,直接传入text变量
  • 删除text()方法里的font_size=100参数(这个参数是在ImageFont.truetype()里设置的,text()方法不支持该参数,会触发报错)

修正后的完整代码:

from PIL import Image, ImageDraw, ImageFont
import arabic_reshaper
from bidi.algorithm import get_display

# 加载支持阿拉伯语方言的字体
font = ImageFont.truetype('AA Sameer Qamri Regular.ttf', size=100)

# 处理阿拉伯语文本:先重塑再调整双向显示
text = get_display(arabic_reshaper.reshape("السَّلامٌ عليكمُ"))
print(text)

# 打开背景图
image = Image.open("insta background.png")

# 绘制文本
draw = ImageDraw.Draw(image)
# 直接传入处理好的text变量即可,它本身就是Unicode字符串,包含方言字符
draw.text(
    (200, image.height - image.height/2 - 50),
    text,
    font=font,
    fill=(0, 0, 0)
)

image.show()

关键说明

  1. 经过arabic_reshaper.reshape()和get_display()处理后的text变量,已经是包含正确字形和双向顺序的Unicode字符串,直接用就行,不用额外转义或加前缀。
  2. 确保你的字体文件AA Sameer Qamri Regular.ttf在代码运行的目录下,或者提供完整路径,否则PIL会找不到字体导致字符显示异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:28:19