【问题标题】:How do I insert a binary image stored in database into a word document using python-docx?如何使用 python-docx 将存储在数据库中的二进制图像插入到 word 文档中?
【发布时间】:2019-08-23 05:07:53
【问题描述】:

我正在尝试使用 python-docx 将图像添加到 Word 文档中。我使用python3。二进制文件存储在 BLOB 列中。我可以在 Sequel Pro 中查看图像,所以它似乎不是数据库错误。

我已使用 UPDATE games SET data = LOAD_FILE('~/pictures/image.gif') WHERE id = 1 将 gif 和 png 添加到数据库中

我正在迭代一堆行。我尝试过使用bin() 函数。然后我得到了一些建议来尝试IO 包。

import io
document.add_picture(io.BytesIO(item["data"]))

item["data"] 是图像二进制。

不幸的是,这给我带来了错误:

  File "/usr/local/lib/python3.7/site-packages/docx/image/image.py", line 199, in _ImageHeaderFactory
    raise UnrecognizedImageError
docx.image.exceptions.UnrecognizedImageError

预期的结果是我可以使用 python-docx 将图像添加到 Word。我遇到了图像文件的这个问题,并且在使用 ImageMagic 转换图像时可以正常工作。 $ convert image.png image.png。所以一种选择可能是保存一个临时文件并转换它?但这似乎是不必要的麻烦。

【问题讨论】:

    标签: python python-3.x python-docx


    【解决方案1】:

    所有这些错误意味着python-docx 无法识别图像二进制文件上的标题。 ImageMagick 对识别的内容更加复杂,并且能够计算出类型。请注意,它确实在写入时以不同的方式将该标头保存为更常规的形式,python-docx 能够很好地获取。

    大多数图片可以毫无问题地导入,但图片标题有很多可变性,即使对于 PNG 之类的内容也是如此。

    在任何情况下,您的图像与传统的标题布局相距甚远而无法识别,您需要在将它们添加到文档之前对其进行预处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-25
      • 2021-04-21
      • 1970-01-01
      • 2017-01-07
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多