=
adding package
592bfb5
from PIL.JpegImagePlugin import JpegImageFile
from PIL import Image
from math import *
import numpy as np
import itertools
def downscale_image(image: JpegImageFile, size: tuple = (224, 224)):
assert image.size[0] % size[0] == 0 and image.size[1] % size[1] == 0
# get box size
height, width = int(image.size[0] / size[0]), int(image.size[1] / size[1])
print(f"Height and width of each box: {(height, width)}")
# we will concatenate the patches over the height axis (axis 0)
patches = []
for j in range(0, size[1] * width, width):
# we must recuperate each width division in order to concatenate the results (on axis 1)
h_div = []
for i in range(0, size[0] * height, height):
box = (j, i, j + width, i + height)
current_box = image.crop(box)
# let us convert the box to a numpy array and calculate the mean
current_box = np.array(current_box).mean(axis = (0, 1))[np.newaxis, np.newaxis, :]
# add to h_div
h_div.append(current_box)
# concatenate over width axis
patches.append(np.concatenate(h_div, axis = 0))
# concatenate over the height axis and transform to a pillow image
image = Image.fromarray(np.uint8(np.concatenate(patches, axis = 1)))
return image