用python提取word中的所有图片

使用word中提取的方式图片会丢失清晰度,使用python写一个脚本,程序运行将弹出对话框选择一个word文件,然后在弹出一个对话框选择一个文件夹保存word中的文件。将该word中的所有图片都保存成png格式,并命名成image_i的样式。

程序运行步骤 如下图所示:

代码:

其中,save_images_from_word函数介绍如下:

  • docx_file:一个字符串,表示要处理的Word文档的路径。
  • output_folder:一个字符串,表示要将图片保存到的文件夹路径。
  1. 使用python-docx库打开给定的Word文档,并将其内容存储在doc对象中。
  2. for i, rel in enumerate(doc.part.rels.values())::遍历文档中的所有关系。每一个关系rel都代表文档中的一个链接或嵌入的对象。通过enumerate函数,我们可以同时获得关系的索引i和关系对象本身。
  3. if "image" in rel.reltype:
    检查当前的关系是否是一个图片。rel.reltype是一个字符串,表示关系的类型。如果这个字符串中包含"image",则表示这是一个图片关系。
  4. image_bytes = rel.target_part.blob
    从图片关系中获取图片的原始字节数据。这里,rel.target_part.blob表示图片的原始二进制数据。
  5. with open(os.path.join(output_folder, f"image_{i}.png"), "wb") as f:
    使用os.path.join函数构造保存图片的完整路径。这里使用了格式化字符串(f-string),将关系索引转换为"image_{i}.png"这样的文件名。例如,如果索引是0,则文件名为"image_0.png"。
  6. f.write(image_bytes)
    将图片的原始字节数据写入到刚刚打开的文件中。这样,图片就被保存为PNG格式的文件了。
python 复制代码
##########################################
#选择一个word文件,在选择一个路径
#程序将所有word中的图片保存成png格式,
#并且命名为image_i

from tkinter import Tk, filedialog  
from docx import Document  
import os  
import io
#from docx.shapes.picture import Picture
from PIL import Image  
  
def save_images_from_word(docx_file, output_folder):
    doc = Document(docx_file)
    for i, rel in enumerate(doc.part.rels.values()):
        if "image" in rel.reltype:
            image_bytes = rel.target_part.blob
            with open(os.path.join(output_folder, f"image_{i}.png"), "wb") as f:
                f.write(image_bytes)  
def select_file():  
    root = Tk()  
    root.withdraw()  
    file_path = filedialog.askopenfilename(filetypes=[("Word files", "*.docx")])  
    return file_path  
  
def select_output_folder():  
    root = Tk()  
    root.withdraw()  
    output_folder = filedialog.askdirectory()  
    return output_folder  
  
# 选择Word文件  
file_path = select_file()  
if file_path:  
    # 选择输出文件夹  
    output_folder = select_output_folder()  
    if output_folder:  
        # 保存图片到输出文件夹  
        save_images_from_word(file_path, output_folder)
相关推荐
前端玖耀里几秒前
如何使用python的boto库和SES发送电子邮件?
python
serve the people几秒前
python环境搭建 (十二) pydantic和pydantic-settings类型验证与解析
java·网络·python
小天源1 分钟前
Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理
开发语言·windows·python·nssm·error 1053·error 1067
喵手34 分钟前
Python爬虫实战:HTTP缓存系统深度实战 — ETag、Last-Modified与requests-cache完全指南(附SQLite持久化存储)!
爬虫·python·爬虫实战·http缓存·etag·零基础python爬虫教学·requests-cache
喵手40 分钟前
Python爬虫实战:容器化与定时调度实战 - Docker + Cron + 日志轮转 + 失败重试完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·容器化·零基础python爬虫教学·csv导出·定时调度
2601_949146531 小时前
Python语音通知接口接入教程:开发者快速集成AI语音API的脚本实现
人工智能·python·语音识别
寻梦csdn1 小时前
pycharm+miniconda兼容问题
ide·python·pycharm·conda
Java面试题总结2 小时前
基于 Java 的 PDF 文本水印实现方案(iText7 示例)
java·python·pdf
不懒不懒2 小时前
【决策树算法实战指南:从原理到Python实现】
python·决策树·id3·c4.5·catr
马猴烧酒.2 小时前
【面试八股|Java集合】Java集合常考面试题详解
java·开发语言·python·面试·八股