当前位置: 首页 > news >正文

用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格式的文件了。
##########################################
#选择一个word文件,在选择一个路径
#程序将所有word中的图片保存成png格式,
#并且命名为image_ifrom 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.blobwith 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)

http://www.lryc.cn/news/277006.html

相关文章:

  • 医疗器械分类及是否需要临床
  • AI人工智能虚拟现实行业发展分析
  • 3. SPSS数据文件的基本加工和处理
  • Ubuntu20二进制方式安装nginx
  • window mysql5.7 搭建主从同步环境
  • MCU、MPU、SOC简介
  • Kubernetes那点事儿——配置存储:ConfigMap、Secret
  • 小白向:搭建企业培训APP的完整技术指南
  • CVE-2023-36025 Windows SmartScreen 安全功能绕过漏洞
  • 分析一个项目(微信小程序篇)二
  • 每日论文推送(有中文摘或源码地址或项目地址)
  • 【漏洞复现】锐捷EG易网关login.php命令注入漏洞
  • Nginx安装http2和ssl模块
  • Android 8.1 隐藏设置中定位功能
  • 无线网卡怎么连接台式电脑?正确操作步骤分享!
  • 聚道云软件连接器助力某贸易公司实现付款流程自动化
  • 第六讲_css盒子模式
  • 【WSL】Win10 使用 WSL2 进行 Linux GPU 开发
  • 什么是博若莱新酒节?
  • Centos7下升级gcc/g++版本(简单 + 避坑)
  • PyTorch项目源码学习(1)
  • adb 使用的出现 adb server is out of date. killing
  • 数据结构之二叉搜索树(Binary Search Tree)
  • Spring Boot自定义启动Banner在线生成工具
  • Android Studio导入项目 下载gradle很慢或连接超时,提示:Read timed out---解决方法建议收藏!
  • 汽车标定技术(十五)--FETK如何帮助Aurix实现快速原型、标定测量功能(1)
  • linux项目部署(jdk,tomcat,mysql,nginx,redis)
  • Unity | 渡鸦避难所-6 | 有限状态机控制角色行为逻辑
  • 数据库参数 PGA_AGGREGATE_LIMIT 限制进程大小
  • 208.【2023年华为OD机试真题(C卷)】停车场车辆统计(贪心算法实现-JavaPythonC++JS实现)