#!/usr/bin/python2 from sys import argv import os NUMOFBITS = 4 def getSize(filename): st = os.stat(filename) return st.st_size def usage(): print "usage: ",argv[0]," \n \tnbits should be a power of 2" def checkif(sizefile,sizeimg,bitn): if sizeMax(sizeimg,bitn) > sizefile: return True return False def sizeMax(sizefile,bitn): return (sizefile-54)*bitn/8 def bits(bytes): r=[] for b in bytes: b = ord(b) for i in xrange(8): r.append((b >> i) & 1) return r[::-1] def byty(bits): r = 0 for b in bits: r = r << 1 r = r + b return chr(r) def bxor(b,c): b = ord(b) i = c[0]*2+c[1] return chr(b^i) if len(argv)<3: usage() exit(-1) NUMOFBITS = int(argv[1]) inf = open(argv[2],"r") outf = open(argv[3],"w") header = inf.read(54) c = inf.read(8/int(NUMOFBITS)) while c: b=[] # b = bits(c[0])[6:8]+bits(c[1])[6:8]+bits(c[2])[6:8]+bits(c[3])[6:8] for d in c: b = b+ bits(d)[-NUMOFBITS:] outf.write(byty(b)) c = inf.read(8/int(NUMOFBITS))