File size: 1,426 Bytes
ea2f505
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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