フォルダ内の画像をパワーポイントにまとめるPythonプログラム

2024-11-21 by 内田裕之

こんにちは。

Pythonで業務効率化を図るうっちゃんです。

本業では材料系の研究職をしているのですが、顕微鏡画像などをパワーポイントにまとめるのに苦労しています。

一つひとつ手作業だと画像サイズの調整が面倒だったり、画像の取り違いがあったりと大変。

そこで、今回はPythonでフォルダ内の画像をパワーポイントにまとめるプログラムを作ったので紹介します。

この記事は内容に広告・プロモーションを含みます。

フォルダ内の画像をパワーポイントにまとめよう

アイディアの画像

まずPythonでパワーポイントを操作するには、python-pptxをインストールする必要があります。

端末画面(コマンド)にて以下のように入力します。

conda install python-pptx

pipを使いたい方はこちら。

pip install python-pptx

無事にインストールできたらコードを書きましょう。

今回はフォルダ内にある画像ファイルを4枚ずつスライドにまとめます。

さらに各画像の下にそのファイル名を書くことで取り違い対策を打ちます。


import os
from pptx import Presentation
from pptx.util import Inches, Pt

# .pyファイルがある今のフォルダのパス
image_folder = os.getcwd()

# ファイルが存在するか確認
if os.path.exists(image_folder + '/output.pptx'):
    # ファイルが存在する場合、既存のプレゼンテーションを開く
    prs = Presentation(image_folder + '/output.pptx')
    print("既存のファイルを開きました。")
else:
    # ファイルが存在しない場合、新しいプレゼンテーションを作成
    prs = Presentation()
    print("新しいファイルを作成しました。")

# 画像ファイルのリストを取得
image_files = [f for f in os.listdir(image_folder) if f.endswith(('.png', '.jpg', '.jpeg','.bmp'))]

# 画像を4枚ずつスライドに追加
for i in range(0, len(image_files), 4):
    slide = prs.slides.add_slide(prs.slide_layouts[5])  # 空のスライドを追加
    for j in range(4):
        if i + j < len(image_files):
            img_path = os.path.join(image_folder, image_files[i + j])
            left = Inches(1.0 + 3.0 * (j % 2))  # 左からの位置
            top = Inches(1.0 + 3.0 * (j // 2))  # 上からの位置
            pic = slide.shapes.add_picture(img_path, left, top, width=Inches(2.5), height=Inches(2.5))
            # ファイル名を追加
            txBox = slide.shapes.add_textbox(left, top + Inches(2.5), width=Inches(2.5), height=Inches(0.5))
            tf = txBox.text_frame
            p = tf.add_paragraph()
            p.text = image_files[i + j]
            p.font.size = Pt(12)

# プレゼンテーションを保存
prs.save('output.pptx')
        

できあがったpptxファイルはこんな感じ。

画像をまとめたパワーポイント

正確には、私のパソコンはubuntuなのでLibreOffice Impressなんですけどね。

Windowsのpower pointとはレイアウトが少し違うかも。

あしからず。

この記事がおもしろいと感じた方はX(旧Twitter)やブログで紹介いただけますと嬉しいです。

おすすめ記事

PythonでFXのデータを取得する方法【ALPHA VANTAGE】

2023年iDeCoのベストな投資先は【コモディティ】Pythonで投資分析した話

【知らないと損】2023年にレバナスに投資してはいけない理由