1. ホーム
  2. python

[解決済み] PythonのPILで画像を別の画像に合成する方法とは?

2022-11-25 17:41:40

質問

ダウンロード可能なデスクトップの壁紙に変換するために、画像を新しい生成された白い背景の上に配置する必要があります。そのプロセスは次のようになります。

  1. 1440x900 サイズの新しい真っ白な画像を作成する。
  2. 既存の画像を上部に配置し、中央に配置する
  3. 単一画像として保存

PILでは ImageDraw オブジェクトがありますが、既存の画像データを別の画像に描画できることを示すものは何もありません。どなたかお勧めの方法やリンクがあれば教えてください。

どのように解決するのですか?

これは、Imageインスタンスの paste メソッドで実現できます。

from PIL import Image
img = Image.open('/path/to/file', 'r')
img_w, img_h = img.size
background = Image.new('RGBA', (1440, 900), (255, 255, 255, 255))
bg_w, bg_h = background.size
offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
background.paste(img, offset)
background.save('out.png')

これと他の多くのPILのトリックは、次のサイトで手に入れることができます。 Nadia AlramliのPILチュートリアル