我试图使用python IMAGE库在图像中绘制unicode文本(BANGLA)。但它没有正确地绘制文本。在孟加拉语中有联合字符,单词"চট্টগ্রাম"包含一些联合字符,如果我提取联合字符,它将看起来像这样"চটটগরাম"。但我试图将图像绘制为原始单词,但它绘制了提取的单词形式。它有什么解决方案吗? 我用于此的代码是
image = Image.new("RGBA", (width, height), text_color)
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font_path, fontsize, encoding="unicode")
w, h = font.getsize(txt_date)
# xy – Top left corner of the text.
draw.text(((width-w)/2, (height-h)/2), txt_date), background_color, font=font)
img_resized = image.resize((width, height), Image.ANTIALIAS)
答案 0 :(得分:0)
您的图片库可能不知道除了最基本的文本形式之外的任何其他内容。这意味着不支持强制性上下文表单,如印度语脚本。
要使这样的文本看起来正确,您需要使用更复杂的文本布局库将其渲染到单独的图像中,然后以某种方式将其合成到最终图像中(可能是图像库可以应对)。
HarfBuzz是一个库,可以根据OpenType字体中指定的规则对依赖于上下文的文本进行“整形”。我为它做了一个Python 3绑定here。
答案 1 :(得分:0)
我有保存问题,但最后我解决了,如果您解决此问题,请按照以下说明进行操作
sudo apt-get install libfreetype6-dev libharfbuzz-dev libfribidi-dev gtk-doc-tools
然后克隆pillow git并转到依赖文件夹
运行
chmod +x install_raqm.sh
./install_raqm.sh
卸载先前的枕头版本并安装,
conda install pillow=6.0.0