result += c
return result;
-def make_tex(fn, filter="LINEAR", anisotropy=0, wrap=None):
- import Image
+def make_tex(fn, filter="LINEAR", anisotropy=0, wrap=None, srgb=False):
+ from PIL import Image
img = Image.open(fn)
elif fmt=="L":
fmt = "LUMINANCE"
+ if srgb:
+ fmt = "S"+fmt
+
result = "storage %s %d %d;\n"%(fmt, img.size[0], img.size[1])
result += "filter %s;\n"%filter
if "MIPMAP" in filter:
data = list(img.getdata())
for y in range(img.size[1]):
i = (img.size[1]-1-y)*img.size[0]
- result += escape("".join(["".join([chr(v) for v in p]) for p in data[i:i+img.size[0]]]))
+ if fmt=="LUMINANCE" or fmt=="SLUMINANCE":
+ 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"
return result
parser.add_argument("-f", "--filter", choices=["NEAREST", "LINEAR", "MIPMAP"], default="LINEAR", help="Filtering mode")
parser.add_argument("-a", "--anisotropy", metavar="NUMBER", help="Maximum anisotropy, 0 = disable")
parser.add_argument("-w", "--wrap", choices=["REPEAT", "CLAMP_TO_EDGE", "MIRRORED_REPEAT"], help="Wrapping mode")
+ parser.add_argument("--srgb", action="store_const", const=True, help="Use sRGB color space")
parser.add_argument("image")
args = parser.parse_args()
if not out_fn:
out_fn = os.path.splitext(args.image)[0]+".tex2d"
out = file(out_fn, "w")
- out.write(make_tex(args.image, filter, args.anisotropy, args.wrap))
+ out.write(make_tex(args.image, filter, args.anisotropy, args.wrap, args.srgb))