Pythonで画像を他の画像にペーストする(Pillow編)
PythonのPillow(PIL)モジュールのImageオブジェクト同士をペーストしてみます。
目次
空の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))
こういう画像ができあがります。
 
公開日
広告
Pythonで画像処理カテゴリの投稿
- Python (Pillow)でグラデーション画像を作る
- PythonでGIFアニメを作る(PILでファイルをつなげる編)
- PythonでOpenCVの画像データをMatplotlibで表示する
- PythonでPDFを画像に変換する(Windows10)
- PythonでPSDファイルをJPEGやPNGに変換する
- Pythonでカラー画像をグレイスケールに変換する(OpenCV編)
- Pythonでフォルダ内に同じ画像がないか検索してみた
- Pythonでマスク画像を作る方法(3選)
- Pythonで図形の外接矩形を描く(OpenCV編)
- Pythonで図形の輪郭の大きさを調べる(OpenCV編)
- Pythonで画像の余白を削除する(OpenCV編)
- Pythonで画像の余白を削除する(Pillow編)
- Pythonで画像の大きさやフォーマットを調べる(Pillow編)
- Pythonで画像の減色をする
- Pythonで画像をトリミングする(Pillow編)
- Pythonで画像を他の画像にペーストする(Pillow編)
- Pythonで画像を回転する(Pillow編)
- Pythonで画像を拡大縮小(リサイズ)する(Pillow編)
- Pythonで画像を読み込み、表示し、保存する(OpenCV編)
- Pythonで画像を読み込み、表示し、保存する(Pillow編)
- Pythonで画像を2値化する(OpenCV編)
- Pythonで記号の輪郭を検出する(OpenCV編)
- PythonとOpenCVで画像をグレースケールに変換してみた
- PythonとOpenCVで画像をネガポジ反転してみた