def sliceAndEmbed(frames, secret_img_path, occ): ''' Partitions secret image into smaller images and embeds them in cover video ''' secret_img = Image.open(secret_img_path) frame_h, frame_w = frames[0].shape[:2] secret_h, secret_w = secret_img.size[1], secret_img.size[0] # Temporarily(& Arbritrarily) setting max slice size as 1 sixth of cover image max_h, max_w = frame_h/6, frame_w/6 numberOfSlices = ceil(secret_h/max_h)*ceil(secret_w/max_w) tiles = image_slicer.slice(secret_img_path, numberOfSlices, save=False) # Rough Index data for now indexData = str(secret_img.size[0]) + ";" + str(secret_img.size[1]) + ";" indexData+= str(len(tiles)) + ";" + str(tiles[0].image.size[0]) + ';' + str(tiles[0].image.size[1]) + '.' index = multi_text_sender.generateRandomFrameNo(len(frames), occ) for i in tiles: loc = multi_text_sender.generateRandomFrameNo(len(frames), occ) indexData += str(loc) + '.' cover_img = Image.fromarray(frames[loc]) temp = ioi.hide_image(cover_img, i.image) frames[loc] = np.array(temp) # Index cover_img = Image.fromarray(frames[index]) temp = ioi.hide_image(cover_img, i.image) frames[index] = np.array(temp) return frames
def sliceAndEmbed(frames, secret_img_path, occ): ''' Partitions secret image into smaller images and embeds them in cover video ''' secret_img = Image.open(secret_img_path) frame_h, frame_w = frames[0].shape[:2] secret_h, secret_w = secret_img.size[1], secret_img.size[0] # Temporarily(& Arbritrarily) setting max slice size as 1 sixth of cover image max_h, max_w = frame_h / 6, frame_w / 6 numberOfSlices = ceil(secret_h / max_h) * ceil(secret_w / max_w) tiles = image_slicer.slice(secret_img_path, numberOfSlices, save=False) # Rough Index data for now indexData = str(secret_img.size[0]) + ";" + str(secret_img.size[1]) + ";" indexData += str(len(tiles)) + ";" + str( tiles[0].image.size[0]) + ';' + str(tiles[0].image.size[1]) + '.' index = multi_text_sender.generateRandomFrameNo(len(frames), occ) for i in tiles: loc = multi_text_sender.generateRandomFrameNo(len(frames), occ) indexData += str(loc) + '.' cover_img = Image.fromarray(frames[loc]) i.image = i.image.convert('RGB') temp = ioi.hide_image(cover_img, i.image) temp = temp.convert('RGBA') frames[loc] = np.array(temp) # Index cover_img = Image.fromarray(frames[index]) temp = stepic.encode(cover_img, indexData) frames[index] = np.array(temp) print index return frames
def extract(frames, index): img = Image.fromarray(frames[index]) indexData = stepic.decode(img).decode() indexData = indexData.split('.') metaData = indexData[0].split(';') secret_img_size = (int(metaData[0]), int(metaData[1])) noOfTiles = int(metaData[2]) slice_size = (int(metaData[3]), int(metaData[4])) t = [] for i in range(1,len(indexData)): temp = frames[int(i)] res = ioi.extract_image(Image.fromarray(temp)).resize((slice_size[0], slice_size[1])) t.append(res) extracted_image = reassemble_image(t, slice_size, secret_img_size[0]/slice_size[0], secret_img_size[1]/slice_size[1]) return extracted_image
def extract(frames, index): img = Image.fromarray(frames[index]) indexData = stepic.decode(img).decode() indexData = indexData.split('.') metaData = indexData[0].split(';') secret_img_size = (int(metaData[0]), int(metaData[1])) noOfTiles = int(metaData[2]) slice_size = (int(metaData[3]), int(metaData[4])) t = [] for i in indexData[1:len(indexData) - 1]: temp = frames[int(i)] # Image.fromarray(temp).save('recvd'+i+'.png') res = ioi.extract_image(Image.fromarray(temp)).resize( (slice_size[0], slice_size[1])) t.append(res) extracted_image = reassemble_image(t, slice_size, secret_img_size[0] / slice_size[0], secret_img_size[1] / slice_size[1]) return extracted_image