from wand.image import Image def box_blur_image_separable(image, blurred_image, radius_x, radius_y): pixels = image.get_pixels() blurred_pixels = blurred_image.get_pixels() for pixel in pixels: x, y = pixel[0], pixel[1] r_total, g_total, b_total = 0, 0, 0 pixel_count = 0 for offset_y in range(-radius_y, radius_y + 1): for offset_x in range(-radius_x, radius_x + 1): new_x = x + offset_x new_y = y + offset_y if 0 <= new_x < image.width and 0 <= new_y < image.height: pixel_color = pixels[new_y * image.width + new_x] r_total += pixel_color.red g_total += pixel_color.green b_total += pixel_color.blue pixel_count += 1 blurred_pixel = blurred_pixels[y * image.width + x] blurred_pixel.red = int(r_total / pixel_count) blurred_pixel.green = int(g_total / pixel_count) blurred_pixel.blue = int(b_total / pixel_count) return blurred_image def save_image(file_stream): with open("image.png", "wb") as file: file.write(file_stream.read()) file.close() class ImageService: def __init__(self): pass def box_blur_image(self, img, radius): with Image(filename=img) as image: image = image.blur(radius, 0) image = image.blur(0, radius) return image def get_simple_image(self): with open("./static/small-image.png", "rb") as file: return file.read() def get_big_image(self): with open("./static/big-image.png", "rb") as file: return file.read() def save_image(self, img): save_image(img)