建议和反馈

请填写你的反馈内容

问答 > 开发语言 > 问答详情
求助中

在 Python 中使用 Wand 创建图像10LK

我正在处理的项目的目标是从 word 文档中获取内容,然后输出一个包含边框框的图像,这些边框包含我用我的代码自动汇集的文本段。这是我需要的示例:

想要的输出

由于我自己的一点点知识和其他人的大量知识,我已经设法为这个项目完成了 90% 的步法。我的代码已经从 Word 文档中获取文本并自动获取我想要的内容。尝试模仿此图像时会出现问题。我正在使用 Wand 创建图像,但我仍然无法让它正常工作。我知道我离我很近,但我完全不确定我错过了什么。以下是严格用于图像创建的代码:

from wand.image import Imagefrom wand.drawing import Drawingtarget_width = 500target_height = 0y_offset = 0y_padding = 4x_padding = 5with Image(width=2000, height=2000, pseudo='xc:white') as img:    for match in find_matches(text=fullText):
        ct += 1
        with Drawing() as ctx:
            ctx.font_size = 20
            ctx.text_alignment = 'center'
            words = match.split(" ")
            words.append("\n" + str(ct))
            word_count = len(words)            while True:
                temp_text = rebuild_text(words, word_count)
                metrics = ctx.get_font_metrics(img, temp_text, multiline=True)                if metrics.text_width > target_width:
                    word_count -= 1
                else:
                    text = temp_text
                    target_height = int(metrics.text_height + 0.5)                    break
            ctx.push()
            ctx.fill_color = 'white'
            ctx.stroke_width = 3
            ctx.stroke_color = 'black'
            ctx.rectangle(2, y_offset + y_padding, width=2*x_padding+target_width,
                          height=6*y_padding+target_height)
            ctx.pop()
            ctx.text(x_padding + (target_width // 2), 16 + 6*y_padding+y_offset, text)
            ctx(img)
            y_offset = target_height + 100*y_padding + 7
    img.trim()
    img.save(filename='patdrawdemoTest.png')

我一遍又一遍地尝试弄乱这段代码,但无济于事。我知道我想要的所有文本都被传递,因为我已经添加了一个打印语句来确保这一点,并且在这里和那里弄乱了代码之后,有时我发现有很多文本重叠,但我永远不能得到超过三个带边框的盒子。以下是我通过在这里和那里更改值而获得的一些输出示例:

示例 1 例2 例3

我无法复制文本重叠输出,但是,以上只是一些示例。我不确定它是否有帮助,但它们之间的区别是文本和矩形等的 y 轴相关值。

我需要的文本行是用 python 中的 docx 库获取的,然后放入变量中;它不是一个简单的字符串。此外,此代码必须适用于任何场合;无论是 5 个文本框、2 个、8 个还是 100 个文本框,它都必须创建一个包含那么多文本框的图像。以下是我已解析并通过我上面的代码传递的文本:

将与交通工具的运营方式相关的第一数据存储在第一区域243

将与交通工具的操作方式相关的第二数据存储在第二区域
244

根据综合能源消耗效率修改运输功能
245

确定组合能源消耗效率,其中该确定包括对等组之间的区块链共识,该对等组包括传输、服务器和至少一个其他传输中的一个或多个246

基于区块链共识,执行智能合约在区块链上记录综合能源消耗效率
247

我将非常感谢我能得到的任何帮助,因为我完全被难住了。请让我知道我是否可以更清楚,或者我是否遗漏了什么来帮助您回答我的问题。谢谢。


2021-07-27
0
请先登陆或注册

xiaohei2021-08-03

矿机、挖矿、服务加V:GBLS18057440235

投一票
评论(0)
赞赏(0)

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 1
  • 7
  • 5
  • 2
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励