作 ▸
svgwriteでSVGのドット絵描いてみる
Python 習作です。
svgwrite 使ってみました
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
できあがりはこういう↓
なんでよりによってなんでこんなものを