画像処理ライブラリPillowのImage.linear_gradientにより上から下に向けて黒から白に変化するグラデーション画像が生成される。また、Image.radial_gradientにより中心から外に向けて同心円状に黒から白に変化するグラデーション画像が生成される。
Pillow(PIL)を使うためにはインポートが必要。PIL.Imageモジュールは通常以下の形式でインポートされる。
from PIL import Image
1. Image.linear_gradient
Image.linear_gradientの書式は以下。引数はmodeのみで、'L'(8ビット1チャンネル)を指定する。
PIL.Image.linear_gradient(mode)
生成される画像のサイズは256x256。y=0が黒(画素値0)、y=255が白(画素値255)になる。
from PIL import Image im = Image.linear_gradient('L') im.save('linear_gradient.jpg')
生成されたグラデーション画像を、'RGB', 'RGBA', 'HSV'等の多チャンネルモードの1チャンネルとして使うことで様々なグラデーション画像を作成できる。またImage.compositeのマスク画像として用いることで、2つの画像をグラデーションを付けて合成できる。
'HSV'モードのH値(色相)にグラデーション画像を反時計回りに90°回した画像(左が黒、右が白)を割り当て、S値(彩度)にグラデーション画像を180°回した画像(下が黒、上が白)を割り当て色相と彩度のマップを作成する例。'HSV'モードのままでは出力できないので'RGB'モードに変換してファイルに保存する。
from PIL import Image grad = Image.linear_gradient('L') v = Image.new('L', (256, 256), 255) im = Image.merge('HSV', [grad.transpose(Image.ROTATE_90), grad.transpose(Image.ROTATE_180), v]) rgb = im.convert('RGB') rgb.save('hsmap.jpg')
2. Image.radial_gradient
Image.radial_gradientの書式は以下。Image.linear_gradient同様に引数はmodeのみで、'L'(8ビット1チャンネル)を指定する。
PIL.Image.radial_gradient(mode)
生成される画像のサイズは256x256。中央が黒(画素値0)、四隅が白(画素値255)の同心円状のグラデーション画像になる。
from PIL import Image im = Image.radial_gradient('L') im.save('radial_gradient.jpg')
グラデーション画像をマスクにして2つの画像をImage.compositeで合成する例。マスクが白い箇所では1つ目の画像、マスクが黒い個所では2つ目の画像が描画され、マスクが中間の画素値の場合はそれに応じて2つの画像がブレンドされる。
使用する画像 'redsty.jpg', 'kuchikomi.jpg'(幅256ピクセルx高さ256ピクセル)は以下(フリー写真素材ぱくたそより)
'redsty.jpg'
'kuchikomi.jpg'
from PIL import Image image1 = Image.open('redsty.jpg') image2 = Image.open('kuchikomi.jpg') mask = Image.radial_gradient('L') out = Image.composite(image1, image2, mask) out.save('composite.jpg')
3. リファレンス
Pillow (PIL Fork) > Image Module > PIL.Image.linear_gradient(mode)
Pillow (PIL Fork) > Image Module > PIL.Image.radial_gradient(mode)
0 件のコメント:
コメントを投稿