#2【Python】PILで3bit画像を作成してみる
《目次》
《内容》
今回はPythonの画像処理ライブラリ「PIL」を使用し3bit(8色)の画像を作成してみたいと思います.
紹介するものより,効率のよいやり方があるかもしれません.
以下の画像を3bit画像にしていきたいと思います.
画像はこちらのサイトから利用しました.
pixabay.com
《プログラム》
from PIL import Image img1 = Image.open("img1.jpg") rgb_im1 = img1.convert('RGB') size = rgb_im1.size img2 = Image.new('RGB',size) for x in range(size[0]): for y in range(size[1]): r1,g1,b1 = img1.getpixel((x,y)) r2 = 255 g2 = 255 b2 = 255 if r1<127 and g1<127 and b1<127: r2 = 0 g2 = 0 b2 = 0 if r1<127 and g1<127 and b1>=127: r2 = 0 g2 = 0 b2 = 255 if r1<127 and g1>=127 and b1<127: r2 = 0 g2 = 255 b2 = 0 if r1<127 and g1>=127 and b1>=127: r2 = 0 g2 = 255 b2 = 255 if r1>=127 and g1<127 and b1<127: r2 = 255 g2 = 0 b2 = 0 if r1>=127 and g1<127 and b1>=127: r2 = 255 g2 = 0 b2 = 255 if r1>=127 and g1>=127 and b1<127: r2 = 255 g2 = 255 b2 = 0 if r1>=127 and g1>=127 and b1>=127: r2 = 250 g2 = 250 b2 = 250 if r1>=127 and g1>=127 and b1>=127: r2 = 250 g2 = 250 b2 = 250 img1.putpixel((x,y),(r2,g2,b2,0)) img1.show() img1.save("3bit.jpg")
実行後以下のような画像になりました.少々分かりにくいですが,8色のみの画像になっているようです.
ちなみに8色とは,黒,白,赤,緑,青,マゼンタ,イエロー,シアンです.
《プチ解説》
- img1.show()
これで処理後の画像を表示させています.
- img1.save("3bit.jpg")
これで3bit.jpgという名前で画像を保存しています.
- rgb_im1 = img1.convert('RGB')
詳しいことはわかりませんが,処理前の画像をPILで扱うために,RGBに変換しているようです.
- size = rgb_im1.size
こちらは画像のサイズを取得しています.