如何在Python中的图像上打印印地语句子(unicode)?

2024-02-09

我有一个名为“hindi.txt”的文件。其内容如下。我使用的是Python3.5。

कामकाजी महिलाओं के लिए देश में दिल्ली असुरक्षित, सिक्किम सबसे बेहतर: रिपोर्ट
9 साल से अटकी राफेल डील मंजूर, 59000 Cr में भारत खरीदेगा 36 फाइटर प्लेन
WhatsApp को टक्कर देने आर्टिफिशियल इंटेलिजेंस के साथ आया गूगल का Allo मैसेंजर
उड़ी हमले पर 10 खुलासे: आर्मी बेस में 150 मीटर अंदर तक घुस आए थे जैश के आतंकी
उड़ी हमलाः भारत का कड़ा रुख देखकर PAK ने LoC से सटे शहरों में कैंसल 
PAK को आतंकी देश करार देने के लिए अमेरिकी संसद में पेश हुआ बिल

我正在打开这个文件,然后逐行阅读。 然后在图像中打印该文本。我的代码片段如下所示。

from PIL import Image, ImageDraw, ImageFont, ImageOps
import os

with open("hindi.txt", "r") as filestream:
    cnum = 1
    astr = filestream.read().splitlines()

    font5 = ImageFont.truetype('/home/SunehraBharat/filestotweet/fonts/ARIALUNI.TTF', 26)

    MAX_W, MAX_H = 1500, 1500


    foreground_image = Image.new('RGB', (MAX_W, MAX_H), (0, 0, 0, 0))
    draw = ImageDraw.Draw(foreground_image)
    image_name = str(cnum) + "_" + "image.png"

    current_h, pad = 40, 14
    c = 1
    for txtline in astr:
        line = str(c) + ").  " + txtline
        #printing on console to check if lines are coming correctly.
        print(line)
        w, h = draw.textsize(line, font=font5)
        draw.text((10, current_h), line, font=font5, fill=(255,255,255,1))
        current_h += h + pad
        c = c + 1


    #saving image
    foreground_image.save(image_name)
    cnum = cnum + 1

由于 print(line) 语句在控制台上输出 - 正确

कामकाजी महिलाओं के लिए देश में दिल्ली असुरक्षित, सिक्किम सबसे बेहतर: रिपोर्ट
9 साल से अटकी राफेल डील मंजूर, 59000 Cr में भारत खरीदेगा 36 फाइटर प्लेन
WhatsApp को टक्कर देने आर्टिफिशियल इंटेलिजेंस के साथ आया गूगल का Allo मैसेंजर
उड़ी हमले पर 10 खुलासे: आर्मी बेस में 150 मीटर अंदर तक घुस आए थे जैश के आतंकी
उड़ी हमलाः भारत का कड़ा रुख देखकर PAK ने LoC से सटे शहरों में कैंसल 
PAK को आतंकी देश करार देने के लिए अमेरिकी संसद में पेश हुआ बिल

现在我的图像输出:

enter image description here As you can compare now, output is not with respect to input. Few words are incorrect "सिक्किम" , "महिलाओं".

我尝试过不同的字体。但每次都得到相同的结果。 你能帮我么。并让我知道我失踪的地方。


渲染印地语(梵文字体)文本似乎存在一个未解决的错误。

https://github.com/python-pillow/Pillow/issues/3191 https://github.com/python-pillow/Pillow/issues/3191

您可以尝试使用其他库,例如: pyvips (我觉得这个 API 不是很直观,但它可能对你有用)

import pyvips


# To install 'pyvips' refers to https://pypi.org/project/pyvips/
#  1. Intall libvips shared library from https://jcupitt.github.io/libvips/install.html
#  2. Set the PATH variable.
#  3. run pip install pyvips

def generate_tweet_image():
    cnum = 1
    output_file = "tweet_file.png"
    text = u''
    with open("hindi.txt", "r", encoding='UTF-8') as filestream:
        for l in filestream.readlines():
            text = text + f'{cnum}) {l}'
            cnum += 1

    MAX_W, MAX_H = 1500, 1500

    # See for API https://jcupitt.github.io/pyvips/vimage.html#pyvips.Image.text

    # font file: ARIALUNI.TTF
    image = pyvips.Image.text(text, width=MAX_W, height=MAX_H, font='Arial Unicode MS', dpi=96)
    image.write_to_file(output_file)
    print(f'File Written at : {output_file}')


generate_tweet_image()

Output:

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中的图像上打印印地语句子(unicode)? 的相关文章

随机推荐

  • 授权 Rails_admin 与 pundi

    我使用 pundit gem 进行授权 在我的档案中config initializers rails admin rb RailsAdmin config do config config authorize with pundit co
  • 如何从 C# 嵌入式资源获取文件夹名称

    我想以文件系统排序资源的方式来排序资源 我无法对名称进行 string split 因为文件夹由 分隔 字符 而不是 字符 这意味着文件夹或文件名中包含任何句点都会破坏排序 有没有办法更改分隔符 或获得嵌入资源的原始位置的不同细分 这将为您
  • Python 中的 Plotly-Dash 库存应用程序,带有客户端回调(x 轴缩放上的 y 轴自动缩放)

    我正在使用 xaxis 滑块在 dash plotly python 中创建一个简单的股票图表应用程序 滑动 x 轴时 我希望 y 轴动态重新缩放到视图 我想我已经设法在通过 relayoutData 挂钩滑动 xaxis 刻度时触发回调函
  • 迁移到 .Net4 后,C# 出现“语言不支持”错误

    我正在尝试将我们的网站从 Net 3 5 迁移到 4 但遇到了一个非常奇怪的问题 一旦我瞄准 Net4 在 3 5 中运行得很好的代码就不再运行了 给了我错误 该语言不支持 xxx TimeZoneInfo tzi calendarItem
  • 如何在 Ruby 中输出前导零?

    我正在从 Ruby 脚本输出一组编号的文件 这些数字来自递增计数器 但为了使它们在目录中很好地排序 我想在文件名中使用前导零 换句话说 文件 001 代替 file 1 有没有simple将数字转换为字符串时添加前导零的方法 我知道我可以做
  • 使用泛型和 jpa EntityManager 方法

    我可以同时使用泛型和 JPA 吗 我正在尝试将四个类的对象持久保存到我的数据库中 这是我的 PersistService 类 public class PersistService
  • 从 erlang 插入 cassandra

    我正在尝试从 Erlang R14B02 通过 thrift 0 6 1 将一些内容插入到 cassandra 0 7 6 中 我正在做以下事情 读取记录定义 rr cassandra types 连接到卡桑德拉 ok C thrift c
  • TopMost = true 的 WinForms 对话框

    我在 WinForms 中实现了一个对话框 该对话框在屏幕右下角显示为通知对话框 问题是 无论何时显示 它都会获得焦点 并且只有当 TopMost true 时才会发生这种情况 我该如何解决这个问题 您需要继承 Form 并覆盖几个属性 F
  • 每个 Docker 容器一个或多个数据库

    假设我有几个不同的容器 每个容器都使用自己的数据库 在这种情况下 关于性能的最佳实践是什么 运行一个容器 比如一台 MySQL 服务器 其中包含所有数据库 还是每个数据库运行一个数据库服务器容器 除了表演之外 任何其他评论都将受到欢迎 由于
  • Android Studio 3.1.1中Aapt2错误

    我将 android studio 从 2 2 更新到 3 1 它总是给我aapt2 error并且构建失败 我添加了android enableAapt2 false在 gradle properties 中 我的项目成功构建 但出现警告
  • Laravel 中的长轮询(sleep() 函数使应用程序冻结)

    我正在尝试在 Laravel 中编写长轮询功能 但是当我使用 sleep 函数时 整个应用程序会冻结 阻塞 直到 sleep 函数完成 有谁知道如何解决这个问题 我的 JavaScript 看起来像这样 function startRefr
  • 自托管 MVC 5 项目

    嘿 您知道如何在桌面上没有本地 IIS 或 IIS Express 的情况下运行 MVC 5 项目吗 在 ASP NET vNext 中 有一个 WebListener 使这成为可能 但我无法将我的项目重新组织为 ASP NET vNext
  • “GridView1”触发了未处理的事件 PageIndexChanging

    我正在使用 gridview 我想使用分页 我已经将允许分页设置为 true 并将页面大小设置为 5 我可以看到 gridview 底部的数字 但是当我单击数字移动到相应页面时 它会抛出错误 The GridView GridView1 f
  • Windows Batch 中嵌套循环中的“继续”等效命令

    我有一个批处理文件 其中包含嵌套循环continue类似命令 for i in 1 2 4 8 16 32 64 128 256 do for j in 1 2 4 8 16 32 64 128 256 do if i gtr j goto
  • jdk1.7/jre/lib/rt.jar的访问限制

    大家好 我在创建 JAXB 解析器时遇到了一个非常奇怪的问题 当我尝试从 eclipse 生成 JAXB 类时 在一个类中它显示了一个非常奇怪的错误 即 Access restriction The type QName is not ac
  • 无法解析 org.tensorflow:tensorflow-lite:0.0.0-nightly

    我下载了最新的tensorflow lite demo 展示一下 Unable to resolve dependency for app debug compileClasspath Could not resolve org tenso
  • 可以阻止 Django 截断长表名吗?

    我将 Django 与现有的 Oracle 数据库 即表不是由 Django 创建的数据库 一起使用 因此 在我的模型中 我必须通过在 Meta 类中指定 db table 的值来指示表名称 我遇到了问题 因为我希望访问的表属于与我拥有凭据
  • 使用多个模板显示页面内容 - WordPress

    是否可以有这样的页面 www site com page 并使用以下命令显示不同的模板版本 www site com page template default www site com page template archive 因此它检
  • C++ 联合体、结构体、成员类型

    如果我有课 class Odp int i int b union long f struct WCHAR pwszFoo HRESULT hr 联合意味着 在列出的所有值中 它一次只能采用其中一个值 就访问这些变量而言 它是如何工作的 我
  • 如何在Python中的图像上打印印地语句子(unicode)?

    我有一个名为 hindi txt 的文件 其内容如下 我使用的是Python3 5 9 59000 Cr 36 WhatsApp Allo 10 150