base:sprite_converter
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:sprite_converter [2015-04-17 04:33] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Bitmap to sprite converter written in Python ====== | ||
+ | |||
+ | This is a simple Python hack that converts monochrome images with a multiple of 24x21px to an array of sprites. It can save the sprites with or without load address. Public Domain. | ||
+ | |||
+ | < | ||
+ | # | ||
+ | # .spr converter for arbitrary sized images (multiple of 24x21) | ||
+ | # 1st argument: file to convert | ||
+ | # 2nd argument: target file | ||
+ | # 3rd argument: load address in hex (optional) | ||
+ | # no error checking at all, I'm lazy :) | ||
+ | |||
+ | import sys, struct | ||
+ | from PIL import Image | ||
+ | |||
+ | img = Image.open(sys.argv[1]).convert(" | ||
+ | |||
+ | if (img.size[0] % 24) != 0 or (img.size[1] % 21) != 0: | ||
+ | print "image size of %s isn't a multiple of 24x21!" | ||
+ | print " | ||
+ | sys.exit(1) | ||
+ | |||
+ | xoff = 0 | ||
+ | yoff = 0 | ||
+ | |||
+ | if len(sys.argv) > 3: | ||
+ | print " | ||
+ | sprbuf = struct.pack("< | ||
+ | else: | ||
+ | sprbuf = str() | ||
+ | |||
+ | while yoff < img.size[1]: | ||
+ | while xoff < img.size[0]: | ||
+ | crop = (xoff, yoff, xoff+24, yoff+21) | ||
+ | print crop | ||
+ | cut = img.crop(crop) | ||
+ | cut_str = cut.tostring() | ||
+ | sprbuf = sprbuf + cut_str + struct.pack(" | ||
+ | xoff = xoff + 24 | ||
+ | yoff = yoff + 21 | ||
+ | xoff = 0 | ||
+ | |||
+ | open(sys.argv[2], | ||
+ | </ |
base/sprite_converter.txt · Last modified: 2015-04-17 04:33 by 127.0.0.1