Hi,
I don't know what type of files they are, but the script allows me to
save to a bitmap just fine. But I do know they need to be in RGBA 4444
format, so I've followed what most of the tutorials for RGBA
conversions said to do...shifting the bytes.
The major problem is that everything is in green, it's shifted up by x
pixels, and it's..um..flipp ed from left to right. I've been working on
this for a few weeks now and any insight to the problem is greatly
appreciated.
http://www.geocities.com/fisherdude_99/TestImg.zip
import struct
import sys
import Image
if len(sys.argv) < 3:
print "usage: tobmp.py <file> <width>"
sys.exit(1)
width = int(sys.argv[2])
f1 = open(sys.argv[1], "rb")
f1.seek(0, 2)
size = f1.tell()
f1.seek(0)
### write BITMAPFILEHEADE R ###
f2 = open(sys.argv[1] + ".bmp", "wb")
f2.write("BM")
bfSize = size+54
f2.write(struct .pack("L", bfSize))
# bfReserved1 and 2
f2.write("\x00\ x00\x00\x00")
bfOffBits = 54
f2.write(struct .pack("L", bfOffBits))
### write BITMAPINFOHEADE R ###
biSize = 40
f2.write(struct .pack("L", biSize))
biWidth = width
f2.write(struct .pack("L", biWidth))
biHeight = (size/ 2/ width)
f2.write(struct .pack("L", biHeight))
biPlanes = 1
f2.write(struct .pack("H", biPlanes))
biBitCount = 32
f2.write(struct .pack("H", biBitCount))
# biCompression
f2.write("\x00\ x00\x00\x00")
# biSizeImage
f2.write("\x00\ x00\x00\x00")
# biXPelsPerMeter
f2.write("\x00\ x00\x00\x00")
# biYPelsPerMeter
f2.write("\x00\ x00\x00\x00")
# biClrUsed
f2.write("\x00\ x00\x00\x00")
# biClrImportant
f2.write("\x00\ x00\x00\x00")
### write the bitmap data ###
print f2.tell() ##must be 54
# since bitmaps are upside down, gotta flip it over
data = f2.read()
i = size-21
while i >= 0:
nm = 0x100
f1.seek(i)
temp1 = struct.unpack(' B', f1.read(1))[0]
peek = temp1
a = nm*(peek >> 24) & 0xff
r = nm*(peek >> 16) & 0xff
g = nm*(peek >> 8 ) & 0xff
b = nm*(peek & 0xff)
sh = (a<<24)|(r<<16) |(g<<8)|b
f2.write(struct .pack('H', sh))
i -= 1
f1.close()
f2.close()
Usage: bmpcon.py testimg 100
Thanks a lot