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

2023-11-26

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

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)

output

21.228  15.920 IMG_20160910_220903848.jpg

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


API 不直接支持此操作。

但是,如果您愿意深入了解内部原理并使用底层lxmlAPI 是可以的。

一般方法是访问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,它将在保存时替换之前的图像。

您可能希望让它处理单个图像并在扩展到单个文档中的多个图像之前先感受一下它。

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

正如您所看到的,不适合胆小的人,但如果您非常想要它并且可以稍微跟踪一下代码,那么应该可以工作:)

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

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

随机推荐

  • IOS的文件系统加密?

    我知道在Mac OS上 我们可以使用Macfuse在用户空间中编写文件系统 我们可以创建一个盒子加密 我不知道IOS上有一个框架 像FUSE Macfuse这样的库 我可以编写我的文件系统来加密 解密文件 可能安装在目录 文件夹上 谁能给我
  • DocumentDb 错误“跨分区查询仅支持聚合的‘VALUE ’”

    我很困惑 我将以下 SQL 查询发送到我的 documentDb 实例 query SELECT SUM c clicks SUM c opens MAX c ts COUNT c FROM c WHERE c clicks gt 0 我收
  • 如何使用 Javascript 找出两个日期之间的差异

    我想获得特定日期的扩孔天数 所以我试图用今天的日期检测特定日期 但这在这里不起作用是我的code如果日期是下个月 27 我怎样才能得到剩余的天数 var date2 new Date var date1 27 5 2012 var diff
  • 从 CMRotationMatrix 获取俯仰、偏航、滚转

    我有一个 CMRotationMatrix rot 我想从矩阵中获取俯仰 偏航 滚转 我有什么想法可以做到这一点吗 Thanks 使用四元数比使用欧拉角更好 可以使用以下公式从四元数导出横滚角 俯仰角和偏航角值 roll atan2 2 y
  • 如何从c中数字的最高有效位开始获取不同的数字?

    我正在解决一个问题 其中给出一个正整数 并且我必须用文字显示它 例如 如果一个数字是2134输出应该是 two one three four 如果我使用模运算符并使用递归技术 我会从最低有效数字开始得到数字 即 four three one
  • 奇怪:按下按钮后 WinForms 窗体自动关闭

    我的应用程序是 WinForms NET 4 C 其中一个表单在按下按钮后会自动关闭 该表单确实有默认的 接受 和 取消 按钮 但这些按钮未被触及 有一个 ButtonTestConnection Click 事件 当单击该事件时 它会完成
  • 未解析的外部符号“public:__thiscall [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我已经看过 我知道还有其他答案 但似乎没有一个答案能给
  • 是否可以通过 VBA 检查文件是否存在于共享点站点上?

    我正在尝试编写一个 Excel 2010 宏 该宏在某些时候必须确认公司共享点网站上是否存在某个文件 doc pdf 该文件可通过 Internet Explorer 访问 所有权限均授予用户 我有该文件的直接链接 我不需要打开它 只需检查
  • 将实时镜头从摄像机流式传输到 Unity3D

    假设我有一个无线摄像机 我想将其实时流式传输到统一 有办法实现这一点吗 奖励问题 广角相机怎么样 180 甚至 360 如果这是我想要与之交互的镜头 那么延迟会是一个多大的问题 除了常规镜头之外 还可以发送更多数据 例如深度感知 使用深度感
  • 从范围中选择但排除某些数字[重复]

    这个问题在这里已经有答案了 是否可以从给定范围 1 90 中选择一个随机数 但排除某些数字 排除的数字是动态创建的 假设它们是 3 8 和 80 我已经设法创建随机数生成器 但无法识别任何可以满足我的要求的函数 Random r new R
  • C#支持多重继承吗?

    我和一位同事就多重继承发生了一些争论 我说不支持 他说支持 所以我想还是去问问网上那些有头脑的人吧 抱歉 您不能从多个类继承 您可以使用接口或一个类和接口的组合 其中接口应遵循签名中的类名称 interface A interface B
  • “ls”命令在 Linux/Unix 中如何工作?

    我想确切地知道 Is 命令在 Linux 和 Unix 中是如何工作的 据我所知 ls forks exec 到 Linux Unix shell 然后获取输出 当前文件树的输出 例如 home ankit 我需要更详细的解释 因为我不确定
  • 如何使用 Array.sort 按特定元素对结构数组进行排序

    很简单 我有一个这样的结构 struct bla string name float depth 我有一个 bla 数组 我想按深度排序 最大深度优先 代表应该做什么 返回 我找不到任何具体的例子 你可以在这里找到一个例子 我将如何对结构数
  • 获取布尔数组中至少 n 个连续 False 值的第一个块的索引

    我有一个numpy布尔数组 w np array True False True True False False False 我想获得第一次的索引n at least错误的值 例如这里 n at least 1 gt desired in
  • 如何检查对象和嵌套字段是否为空[重复]

    这个问题在这里已经有答案了 我有一个对象 我想检查该对象或嵌套字段是否为空 我想打印这个网络字段 但我应该检查某个级别是否有空 否则我会得到空指针异常 我知道我可以这样做 if object null object A null objec
  • 具有两个参数的路由的未定义 [controller]_path

    我在 Phoenix 应用程序中创建了一个控制器 名为ProgressController 这就是我的路由器文件的样子 defmodule MyTestApp Router do use MyTestApp Web router pipel
  • 比较函子类型与运算符<

    In the 谷歌 C 风格指南 the 关于运算符重载的部分建议不要超载any运算符 除非在罕见的特殊情况下 具体来说 它建议 特别是不要超载operator or operator lt 只是这样 您的课程可以用作 STL容器 相反 你
  • 如何告诉 iOS 从 iCloud Drive 下载文件并获取进度反馈

    我正在使用 UIDocumentPicker 选择一个文件 但如果文件很大 则可能需要一段时间才能打开 这对于用户来说并不是一个特别好的体验 我看过 Apple 的 iCloud 编程指南 我似乎无法弄清楚如何实际下载文件并获得一些进度反馈
  • 在 Moment 阿拉伯语本地化中自定义数值

    我想在 moment js 中创建自己的语言环境 其父级应该是阿拉伯本地语言 但我只想更改为数字格式来显示0 9 不是默认显示 根据文档 我可以从以下开始 moment defineLocale ar sa mine parentLocal
  • 使用 python-docx 从 .docx 文件中提取图像位置

    我正在尝试使用以下命令从 docx 文件中获取图像索引python docx图书馆 我能够提取图像的名称 图像的高度和宽度 但不是它在word文件中的索引 import docx doc docx Document filename for