チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Python»Spire.Presentation for Python»画像と図形»Python を使用して PowerPoint プレゼンテーションから画像を抽出する
2026-07-30

Python を使用して PowerPoint プレゼンテーションから画像を抽出する

PowerPoint プレゼンテーションには、商品画像、図表、スクリーンショット、イラストなど、さまざまな画像が含まれています。これらの画像を再利用したり、別の処理に使用したりする場合、手動で1枚ずつ保存する方法は効率的ではありません。

PowerPoint ファイル内の画像は埋め込みリソースとして保存されているため、Python を使用すれば自動的に抽出できます。特に複数のプレゼンテーションを処理する場合、プログラムによる画像抽出は非常に便利です。

この記事では、Spire.Presentation for Python を使用して PowerPoint プレゼンテーションから画像を抽出する方法 を紹介します。

以下の2つの方法について説明します。

Spire.Presentation for Python のインストール

まず、pip を使用して Spire.Presentation for Python をインストールします。

pip install spire.presentation

Spire.Presentation for Python は、PowerPoint ファイルの作成、読み込み、編集、変換などをサポートするライブラリです。

画像抽出以外にも、スライドのエクスポート、図形の編集、PowerPoint から PDF や画像形式への変換など、さまざまなプレゼンテーション処理を自動化できます。

PowerPoint プレゼンテーションからすべての画像を抽出する

PowerPoint プレゼンテーションには、複数のスライドに画像が含まれている場合があります。

すべての画像を一括で抽出したい場合は、Presentation オブジェクトの Images コレクションを使用できます。

以下のコードでは、PowerPoint ファイル内に埋め込まれているすべての画像を取得し、PNG 形式で保存します。

from spire.presentation.common import *
from spire.presentation import *

# Presentationインスタンスを作成
ppt = Presentation()

# PowerPointドキュメントを読み込む
ppt.LoadFromFile("sample.pptx")

# ドキュメント内のすべての画像を走査
for i, image in enumerate(ppt.Images):

    # 画像を抽出
    ImageName = "Output/Images_" + str(i) + ".png"
    image.Image.Save(ImageName)

ppt.Dispose()

出力結果:

Extract all images from ppt

コードの説明

まず、Presentation オブジェクトを作成し、PowerPoint ファイルを読み込みます。

ppt = Presentation()
ppt.LoadFromFile("sample.pptx")

ppt.Images コレクションには、プレゼンテーション内に埋め込まれているすべての画像が格納されています。

このコレクションをループ処理することで、各画像オブジェクトを取得できます。

for i, image in enumerate(ppt.Images):

取得した画像は、Save() メソッドを使用してファイルとして保存できます。

image.Image.Save(ImageName)

抽出された画像は、自動的に名前が付けられます。

例:

Images_0.png
Images_1.png
Images_2.png

この方法は、画像の配置場所やスライド番号を考慮せず、プレゼンテーション全体からすべての画像を取得したい場合に適しています。

特定のスライドから画像を抽出する

場合によっては、プレゼンテーション全体ではなく、特定のスライドに含まれる画像だけを抽出したいことがあります。

この場合、対象スライドを取得し、そのスライド内の図形(Shape)を確認します。

PowerPoint のスライド内に配置された画像は、主に以下の2種類のオブジェクトとして保存されています。

  • SlidePicture
  • PictureShape

以下の例では、3番目のスライドから画像を抽出します。

from spire.presentation.common import *
from spire.presentation import *

# Presentationインスタンスを作成
ppt = Presentation()

# PowerPointドキュメントを読み込む
ppt.LoadFromFile("sample.pptx")

# 指定したスライドを取得
slide = ppt.Slides[0]

i = 0

# スライド内のすべての図形を走査
for s in slide.Shapes:

    # 図形がSlidePicture型か判定
    if isinstance(s, SlidePicture):

        # 画像を抽出
        ps = s if isinstance(s, SlidePicture) else None
        ps.PictureFill.Picture.EmbedImage.Image.Save(
            "Output/Pic_" + str(i) + ".png"
        )
        i += 1

    # 図形がPictureShape型か判定
    if isinstance(s, PictureShape):

        # 画像を抽出
        ps = s if isinstance(s, PictureShape) else None
        ps.EmbedImage.Image.Save(
            "Output/SlidePic_" + str(i) + ".png"
        )
        i += 1

ppt.Dispose()

出力結果:

Extract images from a specific slide

スライド画像抽出の仕組み

プレゼンテーション全体から画像を抽出する方法とは異なり、特定スライドから画像を取得する場合は、スライド内の図形を確認する必要があります。

PowerPoint のスライドは、テキストボックス、表、グラフ、画像など、複数の図形で構成されています。

そのため、まずスライド内のすべての図形を取得します。

for s in slide.Shapes:

次に、それぞれの図形が画像オブジェクトかどうかを確認します。

SlidePicture の場合、以下のプロパティから画像データへアクセスできます。

s.PictureFill.Picture.EmbedImage.Image

一方、PictureShape の場合は以下のプロパティを使用します。

s.EmbedImage.Image

取得した画像オブジェクトに対して Save() メソッドを呼び出すことで、画像ファイルとして保存できます。

複数スライドから画像を抽出する

前の例では、1つのスライドのみを対象にしています。

slide = ppt.Slides[0]

複数のスライドから画像を抽出したい場合は、Slides コレクションをループ処理できます。

for slide_index, slide in enumerate(ppt.Slides):

    for shape in slide.Shapes:
        # ここで画像図形を判定
        pass

この方法を利用すると、複数の PowerPoint ファイルを対象にした画像抽出処理や、大量のプレゼンテーションを処理する自動化ワークフローを構築できます。

まとめ

Python を使用すると、PowerPoint プレゼンテーションから画像を効率的に抽出できます。

Spire.Presentation for Python を利用すれば、以下のような画像抽出処理を簡単に実装できます。

  • プレゼンテーション全体からすべての画像を抽出
  • 指定したスライドから必要な画像だけを抽出
  • 複数スライド・複数ファイルの画像抽出を自動化

Images コレクションを使用するとシンプルにすべての画像を取得でき、スライドの図形を操作する方法では、より細かい制御が可能になります。

また、Spire.Presentation for Python は画像抽出だけでなく、PowerPoint から PDF への変換、スライド画像へのエクスポート、スライド内容の編集、PowerPoint ファイルの作成など、さまざまなプレゼンテーション処理にも対応しています。

Read 11 times