Pythonで画像を他の画像にペーストする(Pillow編)

PythonのPillow(PIL)モジュールのImageオブジェクト同士をペーストしてみます。

目次

  1. 空のImageオブジェクトを作る
  2. Imageオブジェクトにペーストする
  3. ペーストの実施例

空のImageオブジェクトを作る

newメソッドを使って、新しい単色のImageオブジェクトを作ります。小さい画像のペースト先ですね。

img = PIL.Image.new(mode, size, [color])

変数

内容

mode

str

Imageオブジェクトのモードです。

size

tuple

オブジェクトの大きさの指定です。幅と高さのタプルで指定します。

color

tuple

省略可。既定値は0(黒)。指定の仕方はモードに依存します。

img

Image

Imageオブジェクト。

modeはオブジェクトのカラーのモードの指定です。下表から選択します。

モード

内容

1

1 bit/pixel 白黒画像

L

8 bit/pixel 白黒画像

P

8 bit/pixel カラーパレット画像

RGB

3x8 bit/pixel カラー画像

RGBA

4x8 bit/pixel 透過度マスク付きカラー画像

CMYK

4x8 bit/pixel CMYKカラー画像

YCbCr

3x8 bit/pixel ビデオカラー画像

LAB

3x8 bit/pixel Labカラー画像

HSV

3x8 bit/pixel HSVカラー画像

I

32 bit/pixel 符号付き整数

F

32 bit/pixel 浮動小数点数

colorの指定の仕方はモードによって変わります。例えばモードが1やLならintで、RGBなら(red, green, blue)のintのタプルで指定します。

例えば、RGBカラーで64x64サイズの白色にする場合は下記のようにします。

img = PIL.Image.new(mode='RGB', size=(64, 64), color=(255, 255, 255))

Imageオブジェクトにペーストする

小さいImageオブジェクトを大きいImageオブジェクトに貼り付けるには、pasteメソッドを使用します。

canvas_img.paste(source_img, [box], [mask])

変数

内容

canvas_img

Image

貼り付けされる側のImageオブジェクト。

source_img

Image

貼り付けるImageオブジェクト。

box

tuple

省略可。既定値はNone(左上)。貼り付ける位置を示すタプル。

mask

Image

省略可。既定値はNone。

貼り付ける位置をboxに指定します。boxはintのタプルで指定します。貼り付けられる画像の左上の位置だけを指定する場合は、(left, upper)という形で指定します。左上と右下を指定する場合は、(left, upper, right, lower)という形で指定します。

ペーストの実施例

実際に試してみます。

プロ生ちゃん の画像(256x256)を横500ピクセル縦300ピクセルの画像に貼り付けます。貼り付ける位置は、プロ生ちゃんの画像の左上が(50, 22)の位置になるようにします。

まずプロ生ちゃんの画像はこちらです。

貼り付ける画像

これを読み込みます。

>>> from PIL import Image

>>> source_img = Image.open('original.png')

次に桜鼠色の画像を作ります。R:233 G:223 B:229です。

>>> canvas_img = Image.new('RGB', (500,300), (233,223,229))

参考までに表示してみると、こんな画像です。

貼り付けられる画像

では、ペースト(貼り付け)します。

>>> canvas_img.paste(source_img, (50,22))

こういう画像ができあがります。

結果の画像

公開日

広告