もどる TOP

[Python] svgwriteでSVGのドット絵描いてみる

 python初めて触ったのでド習作ちゃん svgwrite使ってみました

pixels2svg.py
import sys
import svgwrite

args = sys.argv

if len(args) < 4:
	print('invalid number of arguments')
	sys.exit(1)

w = int(args[1])
h = int(args[2])
pixels = args[3]
pixels_len = len(pixels)

if pixels_len != w * h:
	print('invalid pixels length ->', pixels_len)
	sys.exit(1)

pixel_size = 4
dwg = svgwrite.Drawing('output.svg', size=(w * pixel_size, h * pixel_size))

for y in range(h):
	start = y * w
	row = pixels[start:start+w]
	for x,p in enumerate(row):
		if int(p) <= 0:
			fill = 'rgb(0,0,0)'
		else:
			fill = 'rgb(255,255,255)'
		dwg.add(dwg.rect(insert=(x * pixel_size, y * pixel_size), size=(pixel_size, pixel_size), fill=fill))
dwg.save()

 これは↓のように幅・高さ・ゼロイチのドットを指定してやると、ドット絵のSVGが出てくる謎の物体。隣接してるドットは同じrectでまとめるなりしたいんだけど、とりあえず追い追いで……。

動かし方
python pixels2svg.py 16 16 0000000000000000000001000000010000001111111110000001111111110000001000000011100000100000000110000111111111101100101110110111111000110100101110000001010010111100000010000010000000000110110110000000011011110000000011111110000000010100000110000000100000001000

 できあがりはこういう↓

できあがり

 よりによってなんでこんなものを……

サイドバーを表示する
ブログ
Whiteday
Whiteday
尋ね人
尋ね人
かつてレレノイドは彼の瞳の中に希望を見ていたが、そのことをあっちこっちに言いふらしまくると、キリウ君は怒ってそれを燃えるゴミの日に出してしまった。