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で画像をネガポジ反転してみた