narupo’s blog

プログラミングやWebサービスについての話題など

Pillowで遊ぶ

Pillow で遊ぶ

平行線

黒い背景に白い平行線を引くだけ。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PIL import Image, ImageDraw

def main():
    wh = (640, 480)
    rgba = (0, 0, 0, 255)
    canvas = Image.new('RGBA', wh, rgba)
    draw = ImageDraw.Draw(canvas)

    y = wh[1]//2
    for x in range(0, wh[0]):
        draw.point((x, y), fill=(255, 255, 255))

    canvas.show()
    canvas.save('/tmp/tmp.png', 'PNG')

    sys.exit(0)

if __name__ == '__main__':
    main()

f:id:narupo:20171025025058p:plain

横たわる縞模様の円柱

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from math import *
from PIL import Image, ImageDraw

def f(draw, frame, x, y):
    a = 64
    b = 4
    r = int(cos(y/a) * cos(frame/b) * 255)
    g = int(cos(y/(a-1)) * cos(frame/(b-1)) * 255)
    b = int(cos(y/(a-2)) * cos(frame/(b-2)) * 255)
    draw.point((x, y), fill=(r, g, b))

def main():
    wh = (640, 480)
    rgba = (0, 0, 0, 255)
    canvas = Image.new('RGBA', wh, rgba)
    draw = ImageDraw.Draw(canvas)

    frame = 0
    for y in range(0, wh[1]):
        for x in range(0, wh[0]):
            frame += 1
            f(draw, frame, x, y)

    canvas.show()
    canvas.save('/tmp/tmp.png', 'PNG')

    sys.exit(0)

if __name__ == '__main__':
    main()

f:id:narupo:20171025032327p:plain

グラデーション・タイル

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from math import *
from PIL import Image, ImageDraw

def f(draw, frame, x, y):
    r = int(abs(1.0 - pow(abs(x), 0.5))) * 10
    g = int(abs(1.0 - pow(abs(y), 0.502))) * 10
    b = 0
    draw.point((x, y), fill=(r, g, b))

def main():
    wh = (640, 480)
    rgba = (0, 0, 0, 255)
    canvas = Image.new('RGBA', wh, rgba)
    draw = ImageDraw.Draw(canvas)

    frame = 0
    for y in range(0, wh[1]):
        for x in range(0, wh[0]):
            frame += 1
            f(draw, frame, x, y)

    canvas.show()
    canvas.save('/tmp/tmp.png', 'PNG')

    sys.exit(0)

if __name__ == '__main__':
    main()

f:id:narupo:20171025041409p:plain