auto_image_censor / censor.py
narugo1992
dev(narugo): add auto censor
600b583
raw
history blame contribute delete
No virus
831 Bytes
from typing import Tuple
from PIL import Image, ImageFilter
def _pixelate(area: Image.Image, radius: int, **kwargs) -> Image.Image:
width, height = area.size
small = area.resize((width // radius, height // radius))
return small.resize(area.size, Image.NEAREST)
def _blur(area: Image.Image, radius: int, **kwargs) -> Image.Image:
return area.filter(ImageFilter.GaussianBlur(radius))
def _color(area: Image.Image, color: str = 'black', **kwargs) -> Image.Image:
return Image.new('RGB', area.size, color)
def censor_area(image_: Image.Image, area: Tuple[int, int, int, int], func, *args, **kwargs):
original_area = image_.crop(area)
processed_area = func(original_area, *args, **kwargs)
assert processed_area.size == original_area.size
image_.paste(processed_area, area)
return image_