Python 2.7で実行。まだPILはPython 3系には対応していないもよう。
※自分の学習用のメモです。
なにをやりたいのか
CGの基本はふたつあります。
ひとつは、任意の座標に点を打つこと。
もうひとつは、任意の座標の点を読み込むこと。
このふたつの機能があれば、理論上、どんな絵もかける……らしいです。
ここでは前者の点を描画してみます。
後者については後ほど(こちら→)PIL(Python Imaging Library)で、画像をセピア調に変換する - Qiita
実行結果
はじめに結果から。こんな風に点を打ちます。
スクリプト
PIL(Python Imaging Library)を使って画像ファイルを作成する。 - Qiita
を元に以下のように書きました。
image-set-flower.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
点を打つサンプル
'''
import Image
import ImageDraw
def drawing(img, gap):
"""
描画(ファイルに書く画像データを編集する)
点を打つ
"""
x,y = img.size
draw = ImageDraw.Draw(img)
for i in range(0,x,gap):
for j in range(0,y,gap):
# ↓こんなパターンを描く
#■■■□
#■□■□
#■■■□
#□□□□
draw.point((i , j ),(0xff,0x00,0x00)) #red
draw.point((i+1, j ),(0xff,0x00,0x00)) #red
draw.point((i+2, j ),(0xff,0x00,0x00)) #red
draw.point((i+3, j ),(0x00,0xff,0x00)) #green
draw.point((i , j+1),(0xff,0x00,0x00)) #red
draw.point((i+1, j+1),(0xff,0xff,0x00)) #yellow
draw.point((i+2, j+1),(0xff,0x00,0x00)) #red
draw.point((i+3, j+1),(0x00,0xff,0x00)) #green
draw.point((i , j+2),(0xff,0x00,0x00)) #red
draw.point((i+1, j+2),(0xff,0x00,0x00)) #red
draw.point((i+2, j+2),(0xff,0x00,0x00)) #red
draw.point((i+3, j+2),(0x00,0xff,0x00)) #green
draw.point((i , j+3),(0x00,0xff,0x00)) #green
draw.point((i+1, j+3),(0x00,0xff,0x00)) #green
draw.point((i+2, j+3),(0x00,0xff,0x00)) #green
draw.point((i+3, j+3),(0x00,0xff,0x00)) #green
return img
def make_image(screen, bgcolor, filename):
"""
画像ファイルを作成
"""
img = Image.new('RGB', screen, bgcolor)
# 間隔(5~32くらい)
gap = 8
img = drawing(img, gap)
img.save(filename)
if __name__ == '__main__':
# 画像のサイズ
screen = (800,600)
# 画像の背景色(RGB)
bgcolor=(0xdd,0xdd,0xdd)
# 保存するファイル名(ファイル形式は、拡張子から自動的に判別する)
filename = "image-set-flower.png"
make_image(screen, bgcolor, filename)
#EOF