python docx 图片_python-docx设置图片大小和对齐方式
在WORD软件中,图片大小一般可以采用点击图片,在“格式”菜单中“大小”里设置图片的高度和宽度,也可以通过鼠标右键菜单“大小”菜单调出设置图片大小的界面,见下图。而在python-docx包中主要使用inline_shape对象的height和width属性设置,笔记将分图像大小设置和图片对齐方式设置等2个方面进行叙述并制作了思维导图。
WORD软件设置图片大小
01设置图像大小
默认图像大小
使用add_picture()方法可以添加图片,具体用法可以参考文章python-docx图像的添加与删除。在添加图片时可以不指定图片高度和宽度,这时图片默认是原图大小。例如,新建来一个docx文档并添加一个图片代码如下:
document = Document() # 新建docx文档document.add_picture('111.jpg') # 插入111.jpg图片不指定图片大小document.save('test.docx') # 保存文档添加图片默认大小见下图
图片默认大小效果图
设置图片大小为固定值
设置图片大小时可以设置固定值,不过要使用单位转换,例如,可以设置为4厘米。一般要先导入docx.shared包中对 Cm,Inche等,然后赋值给inline_shape.height和inline_shape.width属性。代码如下
inline_shape = document.add_picture('111.jpg') # 插入111.jpg图片,并获取形状对象inline_shape.height = Cm(4) # 设置图片高度为4cminline_shape.width = Cm(4) # 设置图片宽度为4cm设置图像大小为4cm效果如下
图片大小设置4cm效果图
按照比例设置图片
在设置图片之前,首先要清楚inline_shape.height和inline_shape.width属性的数据类型和含义,执行以下代码:
document = Document('test.docx') # 读取test.docxprint('原始图像和当前图像的高度', document.inline_shapes[0].height, document.inline_shapes[1].height) # 打印原始图片大小print('当前图像和原始图像的高度比值', document.inline_shapes[1].height / document.inline_shapes[0].height) # 打印当前图片高度比例print('当前图像和原始图像的宽度比值', document.inline_shapes[1].width / document.inline_shapes[0].width) # 打印当前图片宽度比例运行结果见下图
读取图像大小结果图
可见图像高度和宽度是int类型。text.docx中第2个图片中高度比例和宽度都是当前图像值与原始图像值的比值。所以,按照比例设置图片大小也就是将原始图片宽度和高度与比例相乘得到当前图像的大小,最后转换成int类型。在text.docx文件中第2段添加图片,图片大小比例与上图相同。那么新插入的图片是否和第2个图像相同?见如下代码:
inline_shape = document.paragraphs[1].add_run().add_picture('111.jpg') # 在文档第2个段落里添加111.jpg对图片inline_shape.height = int(document.inline_shapes[0].height * 0.5022627985455307) # 按照比例设置图片高度inline_shape.width = int(document.inline_shapes[0].width * 0.3557203287251082) # 按照比例设置图片宽度document.save('test1.docx') # 保存为test1.docx按比例设置图片大小见下图
按比例设置图片大小图
在text1.docx文档中生成的第3三个图像与第2个图像是一样的。
按照固定比例设置图像大小
在设置图大小时经常用到固定比例,以便于图像调整大小时不会发生变形。固定比例就是将图片高度和宽度设置相同的比例,代码如下:
inline_shape = document.paragraphs[1].add_run().add_picture('111.jpg') # 添加第3个图片inline_shape.height = int(document.inline_shapes[0].height * 0.50) ) # 按照50%比例设置图片高度inline_shape.width = int(document.inline_shapes[0].width * 0.50) # 按照50%比例设置图片宽度设置图片固定比例为50%效果如下图
设置图片固定比例为50%效果图
在text1.docx文档中实现来插入的第3个图片高度和宽度比例都是50%。
固定比例的另外一种常用的方式就是“锁定比例”。所谓锁定比例就是当设置高度和宽度中的任何一个时,另外一个也会按照相同的比例进行设置。一般经过读取原始图片大高度或者宽度,设置新的值,计算比例,最后将比例设置宽度或者高度。例如,在test.docx文档中添加第3个图片,设置图片高度为3cm,实行锁定比例,代码如下:
inline_shape = document.paragraphs[1].add_run().add_picture('111.jpg') # 添加第3个图片,用于演示锁定比例scale = inline_shape.height # 读取图片原始大小高度inline_shape.height = Cm(3) # 设置图片高度为3cmscale = inline_shape.height / scale # 计算图片比例inline_shape.width = int(document.inline_shapes[0].width * scale) # 按照比例设置图片宽度设置图片锁定比例功能效果如下图
锁定比例功能效果图
在text1.docx文档中生成的第3个图片高度和宽度都是30%。
02设置图像对齐方式
在插入图片时,经常使用run.add_picture()方法,本质上仍然是在段落中添加,所以,改变段落对齐对齐方式,效果也作用到图片上。例如,如下代码将test.docx文档中对第2个图片设置为居中对齐。
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 导入段落对齐包document.paragraphs[1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置文档中的第2个段落居中图片居中对齐设置效果图
图片居中对齐
文档中第2个图像实现了居中对齐。在WD_PARAGRAPH_ALIGNMENT可以实现LEFT、RIGHT、CENTER、JUSTY和DISTRIBUTE等5种对齐方式。含义如下:
WD_PARAGRAPH_ALIGNMENT.LEFT:左对齐WD_PARAGRAPH_ALIGNMENT.CENTER:居中对齐WD_PARAGRAPH_ALIGNMENT.RIGHT:右对齐WD_PARAGRAPH_ALIGNMENT.JUSTIFY:两端对齐WD_PARAGRAPH_ALIGNMENT.DISTRIBUTE:分散对齐段落的对齐方式更多内容可以参考文章python-docx段落设置。
笔者总结使用python-docx包设置图片大小和对齐方式等2部分内容,制作来思维导图。
python-docx设置图片大小和对齐方式
python docx 图片_python-docx设置图片大小和对齐方式相关推荐
- 【Unity】UGUI动态切换不同尺寸图片时自动设置Image大小
UGUI动态切换不同尺寸图片时自动设置Image大小: 1. image.SetNativeSize(),将Image设置为贴图的原始尺寸 2. sprite.rect获取贴图尺寸,rectTrans ...
- java 在线给word 文件插入图片,并设置图片大小
一.前言: 有时我们想在一篇word文档中的指定位置添加一张服务器上的图片,并且并且设置图片大小.这个对文档的操作一定是需要第三方api的.市面上对文档处理的插件有POI以及openoffice等等, ...
- python颜色表_python docx设置表格单元格背景和文本颜色
我正在使用python 2.7和docx,我想根据条件更改表格中单元格的背景和文本颜色.python docx设置表格单元格背景和文本颜色 我找不到任何关于单元格格式化的有用资源 有什么建议吗? 编辑 ...
- python 批量下载图片_Python 批量下载图片示例
使用Python find函数和urllib下载图片. A:#!/usr/bin/env python import time import urllib i = 0 url = ['']*10 na ...
- python图像对比_python+PIL实现图片对比(一)
前提 前阵子报了个班,学了一些android UI自动化相关的东西,于是想到第一家单位在做android手机自动化的时候,有用到图片对比,来确定是否点到指定的页面,遂想在appium+python做U ...
- python用selenium 验证码图片_Python +Selenium解决图片验证码登录或注册问题(推荐)
1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. ...
- python批量添加水印_Python实现批量图片添加数字水印
之前写过一个类似的代码,是把水印信息打散以后随机添加到原图中,并提供了水印信息的提取功能,请参考Python实现图像空域随机水印加入与提取.本文代码功能:为指定文件夹中的所有图像文件批量添加水印,水印 ...
- python 过滤相似图片_Python过滤纯色图片,挑选视频封面
截取视频封面后,经常出现全黑.全白等不可用的封面图片.于是就有了用程序选择视频封面的需求. 经过不断试验,效果最好的方法是根据图片内物品的数量来选图. 废话不多说,直接上代码: 1. 把图片处理为灰度 ...
- html怎么把设置按钮居中显示图片,html如何设置图片居中
在html中,使用margin属性设置图片居中,只需要给图片元素设置"margin:auto"样式即可.当margin属性值为"auto"时,浏览器会自动分配左 ...
- html图片环绕怎么设置,图片的环绕方式如何设置
肯定还有许多朋友都遇到了图片的环绕方式如何设置这个问题,大家想要解决的话,不妨就来看看iefans网小编为大家准备的设置图片环绕教程分享,希望可以帮助到大家. 方法/步骤分享: 一.如下图,上面是文字 ...
最新文章
- 句法依存分析_[NLP学习笔记]句法分析
- java -c_java% c
- Winform开发框架重构总结
- ImageLoader displayers 之CircleBitmapDisplayer
- DP mixture model
- ODPS技术架构及应用实践
- kafka window 启动_Apache Flink结合Kafka构建端到端的Exactly-Once处理
- 为什么那么多人用“ji32k7au4a83”作密码?
- mysql ssl 1067_mysql服务无法启动1067错误,谁知道正确的解决方法?
- JavaScript中Array类型方法总结
- java多数据源事务处理_springboot整合多数据源解决分布式事务
- 为何大富连续三天彻夜未眠!
- 【redis】spring boot利用redis的Keyspace Notifications实现消息通知
- 做科普自媒体是怎么挣钱的?
- CTC blank 理解
- 第一个成功复制小米粉丝营销的屌丝案例
- 北京林业大学matlab公选课,北林选课攻略
- pytorch下可训练分段函数的写法
- 学习笔记-2-Review of Optimization-3-Quadratic
- MATLAB的appdesigner背景图片设置