from PIL import Image import numpy as np import requests from io import BytesIO def resize_image(input_image: Image, resolution: int): input_image = input_image.convert("RGB") W, H = input_image.size k = float(resolution) / min(H, W) H *= k W *= k H = int(round(H / 64.0)) * 64 W = int(round(W / 64.0)) * 64 img = input_image.resize((W, H), resample=Image.LANCZOS) return img def load_image(url): # Mimic a browser request headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" } response = requests.get(url, headers=headers) img = Image.open(BytesIO(response.content)) return img def generate_image_from_grid(grid: np.array, img_size: int = 512) -> Image: """Generate an iamge from a grid of 0s and 1s""" n = len(grid) cell_pixel_size = img_size // n # Create a new image with white background img = Image.new("RGB", (img_size, img_size), "white") pixels = img.load() for i in range(n): for j in range(n): # Color a cell black if 0 or white if 1 color = (0, 0, 0) if grid[i][j] == 0 else (255, 255, 255) for x in range(cell_pixel_size): for y in range(cell_pixel_size): pixels[j * cell_pixel_size + x, i * cell_pixel_size + y] = color return img