#!/usr/bin/env python # -*- coding: utf-8 -*- # -*- mode: python;Encoding: utf8n -*- # Last updated: <2015/01/01 14:59:37 +0900> ''' 1ドットずつ加工した画像を生成するPythonスクリプト usage: conv_img.py INPUT_IMAGE OUTPUT_IMAGE ''' import sys from PIL import Image SCALEX, SCALEY = 8, 8 def get_color(c, v): ''' 色を与えられた係数で明るくしたり暗くしたり ''' r, g, b = c return (int(r * v), int(g * v), int(b * v)) def write_img(im, sx, sy, cc): ''' 1ドット分の色を数倍にして描き込む ''' nx = sx * SCALEX ny = sy * SCALEY r, g, b = cc for y in range(SCALEY): for x in range(SCALEX): im.putpixel((nx + x, ny + y), (r, g, b)) for x in range(SCALEX): x0 = nx + x y0 = ny im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 1.3)) # y0 = ny + 1 # im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 1.2)) # y0 = ny + SCALEY - 2 # im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 0.7)) y0 = ny + SCALEY - 1 im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 0.7)) for y in range(SCALEY): x0 = nx y0 = ny + y im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 1.2)) # x0 = nx + 1 # im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 1.1)) # x0 = nx + SCALEX - 2 # im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 0.8)) x0 = nx + SCALEX - 1 im.putpixel((x0, y0), get_color(im.getpixel((x0, y0)), 0.8)) def conv_img(infile, outfile): im = Image.open(infile, 'r') srcim = im.convert("RGB") w, h = im.size nim = Image.new("RGB", (w * SCALEX, h * SCALEY)) for y in range(h): for x in range(w): write_img(nim, x, y, srcim.getpixel((x, y))) nim.save(outfile, 'PNG') nim.show() def main(): argvs = sys.argv if len(argvs) != 3: print "usage: python conv_img.py INPUT_IMAGE OUTPUT_IMAGE" sys.exit() infile = argvs[1] outfile = argvs[2] conv_img(infile, outfile) if __name__ == '__main__': main()