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,它将在保存时替换之前的图像。
您可能希望让它处理单个图像并在扩展到单个文档中的多个图像之前先感受一下它。
可能会缓存一两个图像特征,因此在保存并重新加载文件之前,您可能无法获得所有细节,因此请对此保持警惕。
正如您所看到的,不适合胆小的人,但如果您非常想要它并且可以稍微跟踪一下代码,那么应该可以工作:)