【办公类-47-01】20240404 Word内部照片批量缩小长宽(课题资料系列)

news2024/11/17 14:45:08

作品展示

06a7df90ac6448509e39d4cc831cc19d.png

背景需求

最近在做《运用Python优化3-6岁幼儿学习操作材料的实践研究》的课题研究资料(上半学期和下半学期)。

将CSDN里面相关的研究照片文字贴入Word后,就发现一张图片就占了A4竖版一页,太大了。我想把word里面的所有照片的长宽缩小。

8c661d375dcc4b21997bd55de6205c86.png

 

设计过程:

1、花了7天时间,每天都在用AI对话大师和百度AI寻找Python代码,但是都没有成功实现图片缩小

149318e326da4e1fb6dba6552a33fedc.pngf7135e6a3a1843f2972c14e03c6bb822.png2、最后我从百度上搜索到一个非常短的代码,终于实现了图片长宽缩小的需求。

35247076cbde4ea2bf655b39fbd22abd.png

代码展示:



'''
docx内部的图片太大了,需要等比例缩小长宽
作者:
# https://www.5axxw.com/questions/content/keey3a
# https://www.geeksforgeeks.org/working-with-images-python-docx-module/
# https://python-docx.readthedocs.io/en/latest/index.html
AI对话大师写了备注说明

时间:2024年4月3日
'''

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\06 大课题Python'

# 导入docx库。
import docx
# 使用docx.Document()函数打开指定路径的Word文档。
doc = docx.Document(path+r'\1.docx')

# 获取文档的页面宽度和左右边距,计算出文本区域的宽度(即去除边距后的实际可用宽度)。
text_width = doc.sections[0].page_width - doc.sections[0].left_margin - doc.sections[0].right_margin

# 使用enumerate()函数遍历文档中的内联图片(即插入到文本中的图片)。
for i, image in enumerate(doc.inline_shapes):
    # 获取每个图片的原始宽度和高度
    original_width, original_height = image.width, image.height
    # 根据文本区域的宽度计算新的高度,保持图片的宽高比。
    new_height = int(original_height * text_width / original_width)
    # 设置图片的宽度为文本区域的宽度,高度为计算得到的新高度。
    image.width = text_width
    image.height = new_height
# 使用doc.save()函数保存修改后的文档,指定保存路径。
doc.save(path+r'\2.docx')
# # 保存修改后的文档

。


结果展示:

1、直接插入图片后,源文件有162页,一张图片占一页

3c0b1d6cd2cb42d1a6b51ed4d890b130.png

8c661d375dcc4b21997bd55de6205c86.png

图片显示不全

0aec3cabbf204e92969b49bb5f643d58.png

有162页!7a75bc3be8d446fea00a20390a591c91.png

2、用代码缩小图片长宽后,容量少了5MB

a3d837319a244ec491959e9a8bf3bb7b.png

页面稍微少一点,一页显示一张整图(图片整页都显示了,右侧没有遮挡)

4d1a3248b30d460698a6a72fe4a4b756.png

129页

69b0acfaf92847139599e696d9a0e7b9.png

分析:此代码是将图片依据竖版宽度进行等比例缩小,确保每张图片都能再一页上被看清楚,有些图片还是一页大小,占页面。

 

 

于是我微调了代码,把照片的长宽除以2

1cd691046f2a451092d3f9c945dd0fb3.png

代码展示:



'''
docx内部的图片太大了,需要等比例缩小长宽 除以2
作者:
# https://www.5axxw.com/questions/content/keey3a
# https://www.geeksforgeeks.org/working-with-images-python-docx-module/
# https://python-docx.readthedocs.io/en/latest/index.html
AI对话大师写了备注说明

时间:2024年4月3日
'''

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\06 大课题Python'

# 导入docx库。
import docx
# 使用docx.Document()函数打开指定路径的Word文档。
doc = docx.Document(path+r'\1.docx')

# 获取文档的页面宽度和左右边距,计算出文本区域的宽度(即去除边距后的实际可用宽度)。
text_width = doc.sections[0].page_width - doc.sections[0].left_margin - doc.sections[0].right_margin

# 使用enumerate()函数遍历文档中的内联图片(即插入到文本中的图片)。
for i, image in enumerate(doc.inline_shapes):
    # 获取每个图片的原始宽度和高度
    original_width, original_height = image.width, image.height
    # 根据文本区域的宽度计算新的高度,保持图片的宽高比。
    new_height = int(original_height * text_width / original_width)
    # 设置图片的宽度为文本区域的宽度,高度为计算得到的新高度。
    image.width = int(text_width/2)
    image.height = int(new_height/2)
# 使用doc.save()函数保存修改后的文档,指定保存路径。
doc.save(path+r'\2.docx')
# # 保存修改后的文档



图片尺寸变化,但图片容量不变

e7686af4a014481bbf530c12e80c00b9.png

除以2后,照片的长宽变小了,页面少很多

06a7df90ac6448509e39d4cc831cc19d.pngb7badf2b7b7a477a9d7ad4751cc600ba.png

只有69页了,

1aeab5d9fa3e4fd893e79e0ad95d810f.png

图片占页宽的一半,基本符合我的需求(一行2列,插入两张照片)

d2693d368a21433b9e32b3d9162e3c55.png

 

完成了!

现阶段的AI模型还无法覆盖所有的Python编程功能,因此感谢网络大神的无偿分享,帮助我解决迫在眉睫的需求。

有了这个批量调整docx内部照片的代码,就能提高我制作课题阶段资料的速度了,

https://www.5axxw.com/questions/content/keey3ahttps://www.5axxw.com/questions/content/keey3a

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1567840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue2源码解析——vue中如何进行依赖收集、响应式原理

vue每个组件实例vm都有一个渲染watcher。每个响应式对象的属性key都有一个dep对象。所谓的依赖收集,就是让每个属性记住它依赖的watcher。但是属性可能用在多个模板里,所以,一个属性可能对应多个watcher。因此,在vue2中&#xff0…

Qt + VS2017 创建一个简单的图片加载应用程序

简介: 本文介绍了如何使用Qt创建一个简单的图片加载应用程序。该应用程序可以打开图片文件并在界面上显示选定的图片,并保存用户上次选择的图片路径。 1. 创建项目: 首先,在VS中创建一个新的Qt Widgets应用程序项目,并…

Vulnhub:WESTWILD: 1.1

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 dirmap enm4ulinux sumbclient get flag1 ssh登录 提权 横向移动 get root 信息收集 arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 0…

Springboot Thymeleaf 实现数据添加、修改、查询、删除

1、引言 在Spring Boot中使用Thymeleaf模板引擎实现数据的添加、修改、查询和删除功能,通常步骤如下: 在Controller类中,定义处理HTTP请求的方法。创建Thymeleaf模板来处理表单的显示和数据的绑定。 2、用户数据添加 1、 在Controller类中…

2024年福建三支一扶报名指南—照片<100kb

2024年福建三支一扶报名指南—照片<100kb

目标检测——监控下的汽车

一、重要性及意义 首先&#xff0c;车辆检测技术是保证视频监控系统正常运行的基础。通过监控摄像头实时获取的图像&#xff0c;可以自动检测出图像中的车辆&#xff0c;并进行车辆类型的分类和识别。这对于优化城市交通管理、实现智能交通系统具有重要意义。此外&#xff0c;…

智能小车测速(3.26)

模块介绍&#xff1a; 接线&#xff1a; VCC -- 3.3V 不能接5V&#xff0c;否则遮挡一次会触发3次中断 OUT -- PB14 测速原理&#xff1a; cubeMX设置&#xff1a; PB14设置为gpio中断 打开定时器2&#xff0c;时钟来源设置为内部时钟&#xff0c;设置溢出时间1s&#xff0c…

通义灵码功能上线:编程挑战中Claude3(opus)领先一步

最近好多AI博主都在推荐通义灵码&#xff0c;我就下载下来体验了一下&#xff0c;而且目前通义灵码暂时不收费&#xff0c;而且还有一个推荐奖励的活动&#xff0c;活动内容如下&#xff1a; 邀请好友达到一定人数&#xff0c;有一些奖励。 我目前看到微软的Azure云有个语音转…

LabVIEW电力设备在线监测系统

LabVIEW电力设备在线监测系统 在电力行业中&#xff0c;变电站的稳定运行对于保障电力系统的安全性和可靠性至关重要。开发了一种基于LabVIEW软件开发的变电站电力设备在线监测系统&#xff0c;实时监控变电站内部的电力设备状态&#xff0c;确保电力传输的高效与安全。通过对…

Java—抽象方法与接口

声明&#xff1a;以下内容是根据B站黑马程序员的Java课程&#xff0b;博主自己的理解整理而成&#xff0c;课程很好&#xff0c;适合初学者学习。 关于此类题目&#xff0c;重要的是识别出用什么来实现&#xff0c;到底是接口还是抽象方法&#xff0c;还是共有的属性等等&…

React之Diff 算法

在 React 中&#xff0c;通过 React.createElement 也能生成一个虚拟 DOM 节点&#xff08;ReactElement&#xff09;。在 React15 及以前&#xff0c;采用了递归的方式创建虚拟 DOM&#xff0c;递归过程是不能中断的。如果组件树的层级很深&#xff0c;递归会占用线程很多时间…

达梦配置ODBC连接

达梦配置ODBC连接 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 下载ODBC包 下载网址&#xff1a;https://www.unixodbc.org/ unixODBC-2.3.0.tar.gz2 编译并…

树状数组-数据结构

树状数组 t[x] 节点的父节点为 t[x lowbit(x)] 整棵树的深度为 log2n 1 1 . add(x,k) 给指定的节点x加上k — 动态的维护前缀和 需要从x开始&#xff0c;向上找到所有父节点&#xff0c;值都加上k 2. ask(x) 求取节点x之前的前缀和 求取单点之前的前缀和只需要累加即可 …

redis群集有三种模式

目录 redis群集有三种模式 redis群集有三种模式 分别是主从同步/复制、哨兵模式、Cluster ●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均…

LeetCode | 数组 | 二分查找 | 35.搜索插入位置【C++】

题目链接 题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出…

数据结构——图的应用(最小生成树,最短路径,拓扑排序,关键路径)

目录 1.最小生成树 1.概念回顾——生成树 2.最小生成树概念 2.构造最小生成树 1.MST性质 2.Prim算法 3.Kruskal 算法 4.两种算法比较 3.最短路径 1.两点间最短路径 2.某源点到其它各点最短路径 3.单源最短路径——用Dijkstra算法 4.所有顶点间的最短路径…

Echarts 自适应宽高,或指定宽高进行自适应

文章目录 需求分析 需求 有一个按钮实现对Echarts的指定缩放与拉长&#xff0c;形成自适应效果 拉长后效果图 该块元素缩短后效果图 分析 因为我习惯使用 ref 来获取组件的 DOM 元素&#xff0c;然后进行挂载 <div ref"echartsRef" id"myDiv" :sty…

Shell脚本之基本语法

目录 一、变量定义 变量命名规则&#xff1a; 变量的赋值&#xff1a; 只读变量&#xff1a; 删除变量&#xff1a; 二、变量的类型 自定义变量&#xff1a; 环境变量&#xff1a; 位置参数&#xff1a; 预定义变量&#xff1a; 三、键盘输入 四、数值运算 为什么…

余集和拉格朗日定理

L&#xff1a;一个群的例子&#xff08;在下面的文章中进一步详细介绍&#xff09;;R&#xff1a;约瑟夫路易拉格朗日&#xff08;1736-1813&#xff09;&#xff0c; 一、说明 数学家总是痴迷于根据乍一看似乎完全无关的事实/观察来形成概括。为什么&#xff1f;原因很简单&am…

ideaSSM图书借阅管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 SSM 图书借阅管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码 和数据库&#xff0c;系统主…