gpt4 book ai didi

python - 使用 python-docx 从 .docx 文件中提取图像位置

转载 作者:行者123 更新时间:2023-12-04 15:31:01 25 4
gpt4 key购买 nike

我正在尝试使用 python-docx 从 .docx 文件中获取图像索引图书馆。我能够提取图像的名称、图像的高度和宽度。但不是它在单词文件中的索引

import docx
doc = docx.Document(filename)
for s in doc.inline_shapes:
print (s.height.cm,s.width.cm,s._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name)

输出
21.228  15.920 IMG_20160910_220903848.jpg

事实上,我想知道是否有更简单的方法来获取图像名称,比如 s.height.cm 以厘米为单位获取高度。我的主要要求是了解图像在文档中的位置,因为我需要提取图像并对其进行一些工作,然后再次将图像放回同一位置

最佳答案

API 不直接支持此操作。

但是,如果您愿意深入了解内部结构并使用底层 lxml API是可能的。

一般的方法是访问 ImagePart需要查看和修改的图片对应的实例,然后读写._blob属性(将图像文件保存为字节)。

这个样本 XML 可能会有所帮助:
http://python-docx.readthedocs.io/en/latest/dev/analysis/features/shapes/picture.html#specimen-xml

从包含图片的内嵌形状中,您会得到 <a:blip>元素与此:

blip = inline_shape._inline.graphic.graphicData.pic.blipFill.blip

关系 id(通常为 r:id,但在这种情况下为 r:embed)可在以下位置获得:
rId = blip.embed

然后你可以从文档部分获取图像部分
document_part = document.part
image_part = document_part.related_parts[rId]

然后二进制图像可用于在 ._blob 上读写.

如果您编写一个新的 blob,它将在保存时替换先前的图像。

您可能想让它处理单个图像并在将单个文档中的多个图像放大之前对其进行感受。

可能会缓存一两个图像特征,因此在保存并重新加载文件之前,您可能无法获得所有更精细的点,因此请对此保持警惕。

正如您所看到的,不适合胆小的人,但如果您想要它足够糟糕并且可以稍微跟踪代码,则应该可以工作:)

关于python - 使用 python-docx 从 .docx 文件中提取图像位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com