在WORD軟體中,圖片大小一般可以採用點擊圖片,在「格式」菜單中「大小」裡設置圖片的高度和寬度,也可以通過滑鼠右鍵菜單「大小」菜單調出設置圖片大小的界面,見下圖。而在python-docx包中主要使用inline_shape對象的height和width屬性設置,筆記將分圖像大小設置和圖片對齊方式設置等2個方面進行敘述並製作了思維導圖。
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效果如下
按照比例設置圖片
在設置圖片之前,首先要清楚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%效果如下圖
在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部分內容,製作來思維導圖。