result += c
return result
+def values(data, size):
+ for y in range(size[1]-1, -1, -1):
+ for x in range(size[0]):
+ yield data[x+y*size[0]]
+
+def values_multi(data, size):
+ for y in range(size[1]-1, -1, -1):
+ for x in range(size[0]):
+ for c in data[x+y*size[0]]:
+ yield c
+
def make_tex(fn, mipmap=False, srgb=False):
from PIL import Image
+ import base64
+ import codecs
img = Image.open(fn)
result = "storage {} {} {};\n".format(fmt, img.size[0], img.size[1])
if mipmap:
result += "generate_mipmap true;\n"
- result += "raw_data \""
- data = list(img.getdata())
- for y in range(img.size[1]):
- i = (img.size[1]-1-y)*img.size[0]
- if len(img.getbands())==1:
- result += escape("".join([chr(v) for v in data[i:i+img.size[0]]]))
- else:
- result += escape("".join(["".join([chr(v) for v in p]) for p in data[i:i+img.size[0]]]))
- result += "\";\n"
+
+ if len(img.getbands())==1:
+ pixels = values(img.getdata(), img.size)
+ else:
+ pixels = values_multi(img.getdata(), img.size)
+ result += "raw_data ={}=;\n".format(codecs.decode(base64.b64encode(bytes(pixels)), "ascii"))
return result