Python で PowerPoint の画像を追加または削除する

デジタルオフィス時代において、Python はオフィスドキュメントの自動化処理を行うための最適なツールとなっています。PowerPoint の画像管理においては、Python を使用することで複数の PowerPoint ファイルの一括操作が可能となり、手動操作に伴うミスを減らすことができます。本稿では、無料の Python ライブラリを用いて PowerPoint のスライドに画像を追加する方法、または PowerPoint ファイルから画像を削除する方法を紹介します。
* [Python で PowerPoint スライドに画像を追加する](#python-で-powerpoint-スライドに画像を追加する)
* [Python で PowerPoint スライドから画像を削除する](#python-で-powerpoint-スライドから画像を削除する)


## 環境設定：
以下のコマンドで Free Spire.Presentation for Python ライブラリをインストールしてください。（[無料版のページ制限を確認するにはクリック](https://www.e-iceblue.com/Introduce/free-presentation-for-python.html)）
```
pip install Spire.Presentation.Free
```

## Python で PowerPoint スライドに画像を追加する
無料の Python ライブラリが提供する **`ISlide.Shapes.AppendEmbedImageByImageData()`** メソッドを使用すると、指定したスライドに画像を追加できます。操作手順は以下の通りです：
1. PowerPoint プレゼンテーションを作成し、**`Presentation.Slides[index]`** プロパティを介してその中の指定スライドを取得します。
1. 画像を読み込み、スライド上での画像の位置を指定します。
1. **`ISlide.Shapes.AppendEmbedImageByPath()`** メソッドを介して、スライドに画像を追加します。
1. `Presentation.SaveToFile()` メソッドを使用して、生成されたプレゼンテーションを保存します。

Python コード：
```python
from spire.presentation.common import *
import math
from spire.presentation import *

# PowerPoint プレゼンテーションを作成する
presentation = Presentation()

# 最初のスライドを取得する
slide = presentation.Slides[0]

# 画像を読み込む
imageFile = "logo.png"

# スライド内で画像の位置を指定する
left = math.trunc(presentation.SlideSize.Size.Width / float(2)) -100
rect1 = RectangleF.FromLTRB (left, 120, 180 + left, 300)

# スライドに埋め込み画像を追加する
image = slide.Shapes.AppendEmbedImageByPath (ShapeType.Rectangle, imageFile, rect1)

# 画像の外枠線を「塗りつぶしなし」に設定する
image.Line.FillType = FillFormatType.none

# ドキュメントを保存する
presentation.SaveToFile("PPTImage.pptx", FileFormat.Pptx2016)
presentation.Dispose()
```

生成されたドキュメント：
![AddImageinPPT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/716148b0-467a-4226-96ae-defed6677918.png)



## Python で PowerPoint スライドから画像を削除する
PowerPoint スライド内のすべての画像を削除するには、スライド内の各シェイプを反復処理し、シェイプの種類が画像（**`SlidePicture`**）であるかどうかを確認した後、**`ISlide.Shapes.Remove(Index)`** メソッドで画像を削除する必要があります：

1. `Presentation.LoadFromFile()` メソッドを使用して PowerPoint プレゼンテーションを読み込みます。
1. `Presentation.Slides[index]` プロパティを介して指定されたスライドを取得します。
1. 指定されたスライド上のすべてのシェイプを反復処理します。
1. 現在のシェイプが **`SlidePicture`** 型であるかどうかを判断し、そうであれば **`ISlide.Shapes.Remove(Index)`** を使用して画像を削除します。
1. `Presentation.SaveToFile()` メソッドを使用して、生成されたプレゼンテーションを保存します。

Python コード：
```python
from spire.presentation.common import *
from spire.presentation import *

# PowerPoint ファイルを読み込む
ppt = Presentation()
ppt.LoadFromFile("PPTImage.pptx")

# 最初のスライドを取得する
slide = ppt.Slides[0]

# スライド内のすべてのシェイプを反復処理する
for i in range(slide.Shapes.Count - 1, -1, -1):
   
    # 現在のシェイプが画像（SlidePicture）であるかどうかを判断する
    if isinstance(slide.Shapes[i], SlidePicture):
       
        # 画像である場合は、そのシェイプをスライドから削除する
        slide.Shapes.RemoveAt(i)

# 結果ファイルを保存する
ppt.SaveToFile("RemovePowerPointImages.pptx", FileFormat.Pptx2016)
ppt.Dispose()
```

上記の例では、Python を介して PowerPoint の画像を追加および削除することができます。さらに、この無料ライブラリは既存の画像の編集や置換、[PowerPoint からの画像の抽出もサポートしています](https://www.e-iceblue.com/Tutorials/Python/Spire.Presentation-for-Python/Program-Guide/Image-and-Shapes/Python-Extract-Images-from-PowerPoint-Presentations.html)。