import scipy,os,os.path,struct from PIL import Image from pylab import * ion() cover = array(Image.open("jpg/00047-scaled.jpg")) data = randint(0,256,size=100000) def unpack_bits_slow(a): a = array(bytearray(a),'B') n = len(a) result = zeros(n*8,'B') for i in range(n): for j in range(8): result[i*8+j] = (0!=a[i]&(1<<j)) return result def unpack_bits(a): a = array(bytearray(a),'B') n = len(a) i = arange(n) result = zeros(n*8,'B') for j in range(8): result[i*8+j] = (0!=a[i]&(1<<j)) return result def hide_bits(cover,data): data = bytearray(data) n = len(data) nb = struct.pack("I",n) data = bytearray(nb)+data data = array(data,'B') bits = unpack_bits(data) assert bits.size<=cover.size cover = cover.copy() cover.ravel()[:len(bits)] = ((cover.ravel()[:len(bits)]&0xfe)|bits) return cover def pack_bits(b): a = zeros((len(b)+7)/8,'B') i = arange(len(a)) for j in range(8): a[i] |= (b[i*8+j]!=0)*(1<<j) return str(bytearray(a)) def recover_bits(steg): data = pack_bits(steg.ravel()&1) n = struct.unpack("I",data[:4])[0] return data[4:4+n] |
Course Info >