Python/docx

5.docx - 이미지 추가하기

언제나휴일 2021. 11. 26. 11:25
반응형

이번 글은 문서(Document)에 이미지를 추가하는 것을 알아봅시다.

Document에는 이미지를 추가하는 add_picture 메서드를 제공합니다.

add_picture(image_path_or_stream, width=None, height=None)

add_picture 메서드에 첫 번째 인자로 이미지 파일 경로 혹은 스트림을 전달해 주어야 합니다.

 

1. 이미지 경로 전달

다음은 add_picture 메서드에 경로를 전달하여 이미지를 추가하는 기본 코드입니다.

document = Document()
document.add_picture('orum.jpg')
document.save("picture1.docx")

picture1.docx

2. Stream 전달

다음은 add_picture 메서드에 Stream을 전달하여 이미지를 추가하는 기본 코드입니다. 

메뉴얼에 Stream이라고 표현하고 있는데 이미지 bytes 라고 볼 수 있습니다.

다음은 이미지 파일을 열어 데이터를 읽어 bytes 로 변환 후에 add_picture 메서드에 전달하는 예제 코드입니다.

from docx import Document
import io

document = Document()
with open('orum.jpg', 'rb') as f:
    data = f.read()
bytes_image = io.BytesIO(data)
document.add_picture(bytes_image)
document.save("picture2.docx")

picture2.docx

3. 폭과 너비 전달

다음은 add_picture 메서드에 경로와 함께 폭과 너비를 전달하여 이미지를 추가하는 코드입니다.

from docx import Document
from docx.shared import Inches,Cm

document = Document()
document.add_picture('orum.jpg',width=Inches(4),height=Inches(3))
document.save("picture3.docx")
document = Document()

picture3.docx

4. 표(Table)에 이미지 추가

이미지를 표에 추가할 수도 있습니다.

실제로는 Run에 add_picturea 메서드를 호출해서 표에 이미지를 추가합니다.

 

이를 위해 Table의 Cell, Cell에 Paragraph, Paragraph에 Run 순으로 참조를 진행합니다.

다음은 표에 이미지를 추가하는 코드입니다.

from docx import Document
from docx.shared import Inches,Cm

document = Document()
grid_t_style = document.styles["Table Grid"]
table = document.add_table(2,3)
table.style = grid_t_style
cell = table.cell(0,0)
para = cell.add_paragraph()
run = para.add_run()
run.add_picture("orum.jpg",width=Inches(2),height=Inches(2))
document.save("picture4.docx")

picture4.docx

반응형

'Python > docx' 카테고리의 다른 글

4. docx - 표(Table) 작성하기 add_table  (0) 2021.11.26
3. docx - 문서에 단락 추가하기 add_paragraph  (0) 2021.11.25
2. docx.Document 소개  (0) 2021.11.25
1. docx 소개  (0) 2021.11.25