from PIL import Image import numpy as np def image_to_bits(img: Image.Image) -> str: img = img.convert('RGB') byte_arr = np.array(img).flatten() return ''.join(format(b, '08b') for b in byte_arr) def bits_to_image(bits: str, shape) -> Image.Image: byte_list = [int(bits[i:i+8], 2) for i in range(0, len(bits), 8)] arr = np.array(byte_list, dtype=np.uint8).reshape(shape) return Image.fromarray(arr)