python-pptx로 이미지 센터링
5340 단어 python-pptx파워 포인트파이썬pillow
개요
python-pptx와 Pillow (PIL)를 사용하여 PowerPoint의 중앙에 이미지를 삽입 (센터링) 할 수 있도록했습니다.
배경
python-pptx은 파이썬에서 PowerPoint를 만들 수있는 라이브러리입니다.
매우 편리합니다만, 슬라이드에 화상 삽입할 때의 삽입 위치는, 화상 좌상의 좌표로 밖에 지정 밖에 할 수 없습니다.
센터링을 하고 싶었지만 그런 옵션이 python-pptx에 있는지 확실하지 않았습니다.
그래서 Pillow라는 라이브러리로 이미지를 별도로 읽어 이미지 사이즈를 취득하는 것으로, 센터링을 실현했습니다.
환경
macOS Catalina 버전 10.15.3
python3.7.0
설치
pip install python-pptx
pip install Pillow
코드
from pptx import Presentation
from pptx.util import Inches
from PIL import Image
IMG_PATH = "/path/to/img_file"
IMG_DISPLAY_HEIGHT = Inches(3) #スライドに表示するときの画像の高さ。とりあえず3インチとしておく。
SLIDE_OUTPUT_PATH = "test.pptx" #スライドの出力先パス
#スライドオブジェクトの定義
prs = Presentation()
#スライドサイズを取得
SLIDE_WIDTH = prs.slide_width #
SLIDE_HEIGHT = prs.slide_height
#白紙のスライドを追加
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
#画像サイズを取得してアスペクト比を得る
im = Image.open(IMG_PATH)
im_width, im_height = im.size
aspect_ratio = im_width/im_height
#表示された画像のサイズを計算
img_display_height = IMG_DISPLAY_HEIGHT
img_display_width = aspect_ratio*img_display_height
#センタリングする場合の画像の左上座標を計算
left = ( SLIDE_WIDTH - img_display_width ) / 2
top = ( SLIDE_HEIGHT - img_display_height ) / 2
#画像をスライドに追加
slide.shapes.add_picture(IMG_PATH, left, top, height = IMG_DISPLAY_HEIGHT)
#スライドを出力
prs.save(SLIDE_OUTPUT_PATH)
이상의 코드에 의해 아래와 같은, 그림이 센터링 된 파워포 슬라이드를 만들 수 있습니다. (테스트 화상은 필자 촬영)
Pillow 부분은 원래 이미지의 종횡비를 계산할 수 있으면 무엇이든 좋기 때문에, 예를 들면 opencv에서도 대용 가능합니다.
문서에 따르면 python-pptx에는 size의 속성을 가진 Image라는 클래스가 있었고, 거기에서 size를 얻을 수도 있을 것 같지만 구체적인 방법을 알지 못했습니다.
이미지 사이즈 취득을 위해서만 Pillow를 사용하는 것은 스마트하지 않기 때문에, 만약 python-pptx 단체로의 방법을 아는 분이 있으면 교수 받을 수 있으면 기쁩니다.
본 기사는 이상입니다.
여기까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(python-pptx로 이미지 센터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shimajiroxyz/items/f57efa222765ac9eea39
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
python-pptx은 파이썬에서 PowerPoint를 만들 수있는 라이브러리입니다.
매우 편리합니다만, 슬라이드에 화상 삽입할 때의 삽입 위치는, 화상 좌상의 좌표로 밖에 지정 밖에 할 수 없습니다.
센터링을 하고 싶었지만 그런 옵션이 python-pptx에 있는지 확실하지 않았습니다.
그래서 Pillow라는 라이브러리로 이미지를 별도로 읽어 이미지 사이즈를 취득하는 것으로, 센터링을 실현했습니다.
환경
macOS Catalina 버전 10.15.3
python3.7.0
설치
pip install python-pptx
pip install Pillow
코드
from pptx import Presentation
from pptx.util import Inches
from PIL import Image
IMG_PATH = "/path/to/img_file"
IMG_DISPLAY_HEIGHT = Inches(3) #スライドに表示するときの画像の高さ。とりあえず3インチとしておく。
SLIDE_OUTPUT_PATH = "test.pptx" #スライドの出力先パス
#スライドオブジェクトの定義
prs = Presentation()
#スライドサイズを取得
SLIDE_WIDTH = prs.slide_width #
SLIDE_HEIGHT = prs.slide_height
#白紙のスライドを追加
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
#画像サイズを取得してアスペクト比を得る
im = Image.open(IMG_PATH)
im_width, im_height = im.size
aspect_ratio = im_width/im_height
#表示された画像のサイズを計算
img_display_height = IMG_DISPLAY_HEIGHT
img_display_width = aspect_ratio*img_display_height
#センタリングする場合の画像の左上座標を計算
left = ( SLIDE_WIDTH - img_display_width ) / 2
top = ( SLIDE_HEIGHT - img_display_height ) / 2
#画像をスライドに追加
slide.shapes.add_picture(IMG_PATH, left, top, height = IMG_DISPLAY_HEIGHT)
#スライドを出力
prs.save(SLIDE_OUTPUT_PATH)
이상의 코드에 의해 아래와 같은, 그림이 센터링 된 파워포 슬라이드를 만들 수 있습니다. (테스트 화상은 필자 촬영)
Pillow 부분은 원래 이미지의 종횡비를 계산할 수 있으면 무엇이든 좋기 때문에, 예를 들면 opencv에서도 대용 가능합니다.
문서에 따르면 python-pptx에는 size의 속성을 가진 Image라는 클래스가 있었고, 거기에서 size를 얻을 수도 있을 것 같지만 구체적인 방법을 알지 못했습니다.
이미지 사이즈 취득을 위해서만 Pillow를 사용하는 것은 스마트하지 않기 때문에, 만약 python-pptx 단체로의 방법을 아는 분이 있으면 교수 받을 수 있으면 기쁩니다.
본 기사는 이상입니다.
여기까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(python-pptx로 이미지 센터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shimajiroxyz/items/f57efa222765ac9eea39
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install python-pptx
pip install Pillow
코드
from pptx import Presentation
from pptx.util import Inches
from PIL import Image
IMG_PATH = "/path/to/img_file"
IMG_DISPLAY_HEIGHT = Inches(3) #スライドに表示するときの画像の高さ。とりあえず3インチとしておく。
SLIDE_OUTPUT_PATH = "test.pptx" #スライドの出力先パス
#スライドオブジェクトの定義
prs = Presentation()
#スライドサイズを取得
SLIDE_WIDTH = prs.slide_width #
SLIDE_HEIGHT = prs.slide_height
#白紙のスライドを追加
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
#画像サイズを取得してアスペクト比を得る
im = Image.open(IMG_PATH)
im_width, im_height = im.size
aspect_ratio = im_width/im_height
#表示された画像のサイズを計算
img_display_height = IMG_DISPLAY_HEIGHT
img_display_width = aspect_ratio*img_display_height
#センタリングする場合の画像の左上座標を計算
left = ( SLIDE_WIDTH - img_display_width ) / 2
top = ( SLIDE_HEIGHT - img_display_height ) / 2
#画像をスライドに追加
slide.shapes.add_picture(IMG_PATH, left, top, height = IMG_DISPLAY_HEIGHT)
#スライドを出力
prs.save(SLIDE_OUTPUT_PATH)
이상의 코드에 의해 아래와 같은, 그림이 센터링 된 파워포 슬라이드를 만들 수 있습니다. (테스트 화상은 필자 촬영)
Pillow 부분은 원래 이미지의 종횡비를 계산할 수 있으면 무엇이든 좋기 때문에, 예를 들면 opencv에서도 대용 가능합니다.
문서에 따르면 python-pptx에는 size의 속성을 가진 Image라는 클래스가 있었고, 거기에서 size를 얻을 수도 있을 것 같지만 구체적인 방법을 알지 못했습니다.
이미지 사이즈 취득을 위해서만 Pillow를 사용하는 것은 스마트하지 않기 때문에, 만약 python-pptx 단체로의 방법을 아는 분이 있으면 교수 받을 수 있으면 기쁩니다.
본 기사는 이상입니다.
여기까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(python-pptx로 이미지 센터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shimajiroxyz/items/f57efa222765ac9eea39
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from pptx import Presentation
from pptx.util import Inches
from PIL import Image
IMG_PATH = "/path/to/img_file"
IMG_DISPLAY_HEIGHT = Inches(3) #スライドに表示するときの画像の高さ。とりあえず3インチとしておく。
SLIDE_OUTPUT_PATH = "test.pptx" #スライドの出力先パス
#スライドオブジェクトの定義
prs = Presentation()
#スライドサイズを取得
SLIDE_WIDTH = prs.slide_width #
SLIDE_HEIGHT = prs.slide_height
#白紙のスライドを追加
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
#画像サイズを取得してアスペクト比を得る
im = Image.open(IMG_PATH)
im_width, im_height = im.size
aspect_ratio = im_width/im_height
#表示された画像のサイズを計算
img_display_height = IMG_DISPLAY_HEIGHT
img_display_width = aspect_ratio*img_display_height
#センタリングする場合の画像の左上座標を計算
left = ( SLIDE_WIDTH - img_display_width ) / 2
top = ( SLIDE_HEIGHT - img_display_height ) / 2
#画像をスライドに追加
slide.shapes.add_picture(IMG_PATH, left, top, height = IMG_DISPLAY_HEIGHT)
#スライドを出力
prs.save(SLIDE_OUTPUT_PATH)
Reference
이 문제에 관하여(python-pptx로 이미지 센터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shimajiroxyz/items/f57efa222765ac9eea39텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)