Pythonでpptx内のスライド内に画像ファイルを挿入する方法
今回はPythonでパワーポイントファイル(pptx)のスライド内に画像ファイルを挿入していきます。ライブラリとして、python-pptxを使用します。スライドへ画像ファイルを挿入して資料作成を自動化していきましょう。
例えばこんな方にお薦め
- 最近Pythonを使い始めて、どんなことができるか試してみたい
- 写真やグラフをパワポで見やすい形で整理しておきたい
- パワポで定型的で定期的な報告資料を求められてしまった、そして資料作成というルーチン作業が増えてしまった
前準備として、python-pptxライブラリのインストールを済ませておきます。説明には下記のコードを使います。
今回のコード
import pptx from pptx.util import Inches import os cd = os.getcwd() prs = pptx.Presentation() slide = prs.slides.add_slide(prs.slide_layouts[6]) pic_left = Inches(1) pic_top = Inches(2) pic_height = Inches(3) image_path = "./graph.png" slide.shapes.add_picture(image_path, pic_left, pic_top, height=pic_height) prs.save(cd + '/test.pptx')
今回は、.pyファイルと同じディレクトリに貼り付けたい画像ファイル(ここでは、"graph.png")を置いておきます。上記のコードを実行すると、.pyファイルと同じディレクトリに"test.pptx" というパワポファイルができています。
graph.png
ファイルを開くと次のようなレイアウトのファイルができています。graph.pngが貼り付けられていることがわかります。
コードの解説
それではコードの解説をしていきます。
import pptx
pptxモジュールをインポートします。パワポを操作するのに使用します。
from pptx.util import Inches
Inchesモジュールをインポートします。パワポ内の長さを扱うのに使用します。
import os
osモジュールをインポートします。現在のディレクトリを取得するのに使用します。
cd = os.getcwd()
cd変数に現在のディレクトリを格納します。
prs = pptx.Presentation()
pptx.Presentation() をprsという変数で表します。以降、毎回pptx.Presentation と記述しなくてもprsと書いて省略することができます。
slide = prs.slides.add_slide(prs.slide_layouts[6])
全行で記述したパワポ prs にスライドを追加します。また、引数でスライドのレイアウトを指定しています。今回は白紙のレイアウト6を選択しています。レイアウトの解説についてはこちら(Pythonでpptxファイルを作成する方法)を参照してください。
pic_left = Inches(1)
スライドの左端から貼り付ける画像ファイルの左端までの距離を指定します。
pic_top = Inches(2)
スライドの上端から貼り付ける画像ファイルの上端までの距離を指定します。
pic_height = Inches(3)
貼り付ける画像のスライド内での高さを指定します。ここでは高さのみ指定しますが、この場合縦横比は固定されて幅が決定されます。もし、縦横比を変更したい場合には幅を別途していすることもできます。
image_path = "./graph.png"
画像ファイルのパスを指定します。他の形式の画像ファイル(jpg, jpeg, bmp等)を指定することもできます。
slide.shapes.add_picture(image_path, pic_left, pic_top, height=pic_height)
テーブル全体の幅を指定します。ここでは7インチとしています。1列の幅はこの幅を列数で割った値になります。幅を指定する場合には、幅を指定する変数(例えばpic_widthなど)を設定し、add_pictureの引数にwidth=pic_width を追加することで指定できます。
prs.save(cd + '/test.pptx')
prs.save() でこれまでのprsへの作業内容を保存します。開いてみると、上記で指定してきたスライド内の位置に"graph.png" が貼り付けられていることがわかります。
まとめ
今回は、Pythonを使ってパワポファイルに画像ファイルを挿入しました。これでExcelやmatplotlib等で作成したグラフや撮影した写真等を自動で追加したりすることができますね。