こうこく
作 ▸

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

できあがりはこういう↓

できあがり
できあがり

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

この記事に何かあればこちらまで (非公開)