imgutils.operate.censor_
- Overview:
A tool for obscuring specified regions on an image.
censor_areas
- imgutils.operate.censor_.censor_areas(image: str | PathLike | bytes | bytearray | BinaryIO | Image, method: str, areas: List[Tuple[float, float, float, float]], **kwargs) Image [source]
Applies censoring to specific areas of an image using the registered censor method.
- Parameters:
image (ImageTyping) – The input image to be censored.
method (str) – The name of the registered censor method to be used.
areas (List[Tuple[float, float, float, float]]) – A list of tuples representing the rectangular areas to be censored in the format
(x0, y0, x1, y1)
.kwargs – Additional keyword arguments to be passed to the censor method.
- Returns:
An instance of PIL Image with the censored areas.
- Return type:
Image.Image
- Examples::
>>> from PIL import Image >>> from imgutils.operate import censor_areas >>> >>> origin = Image.open('genshin_post.jpg') >>> areas = [ # areas to censor >>> (967, 143, 1084, 261), >>> (246, 208, 331, 287), >>> (662, 466, 705, 514), >>> (479, 283, 523, 326) >>> ] >>> >>> # censor with black color >>> color_black = censor_areas(origin, 'color', areas, color='black') >>> >>> # censor with pixelate >>> pixelate = censor_areas(origin, 'pixelate', areas, radius=12) >>> >>> # censor with emoji >>> emoji = censor_areas(origin, 'emoji', areas)
This is the result:
censor_nsfw
- imgutils.operate.censor_.censor_nsfw(image: str | PathLike | bytes | bytearray | BinaryIO | Image, method: str, nipple_f: bool = False, penis: bool = True, pussy: bool = True, level: str = 's', version: str = 'v1.0', model_name: str | None = None, conf_threshold: float = 0.3, iou_threshold: float = 0.7, **kwargs)[source]
Applies censoring to sensitive areas in NSFW images based on object detection.
The censor area selected by this function is provided by the
imgutils.detect.censor.detect_censors()
function.- Parameters:
image (ImageTyping) – The input image to be censored.
method (str) – The name of the registered censor method to be used.
nipple_f (bool) – Whether to censor female nipples. Default is
False
.penis (bool) – Whether to censor penises. Default is
True
.pussy (bool) – Whether to censor vaginas. Default is
True
.level (str) – The scale for NSFW object detection model. Options are
s
(small),n
(nano, faster thans
). Default iss
.version (str) – The version of the NSFW object detection model. Default is
v1.0
.model_name (Optional[str]) – Optional custom model name. If not provided, it will be constructed from the version and level.
conf_threshold (float) – The confidence threshold for object detection. Default is
0.3
.iou_threshold (float) – The IoU (Intersection over Union) threshold for non-maximum suppression. Default is
0.7
.kwargs – Additional keyword arguments to be passed to the censor method.
- Returns:
An instance of PIL Image with the sensitive areas censored.
- Return type:
Image.Image
- Examples::
>>> from PIL import Image >>> from imgutils.operate import censor_nsfw >>> >>> origin = Image.open('nude_girl.png') >>> >>> # censor with black color >>> color_black = censor_nsfw(origin, 'color', nipple_f=True, color='black') >>> >>> # censor with pixelate >>> pixelate = censor_nsfw(origin, 'pixelate', nipple_f=True, radius=12) >>> >>> # censor with emoji >>> emoji = censor_nsfw(origin, 'emoji', nipple_f=True)
This is the result (Warning: NSFW!!!)
BaseCensor
- class imgutils.operate.censor_.BaseCensor[source]
The Censor base class serves as the foundation for creating custom censor methods by inheriting from this class and registering them using the
register_censor_method()
function.- censor_area(image: Image, area: Tuple[int, int, int, int], **kwargs) Image [source]
Applies censoring to a specific area within the image.
- Parameters:
image (Image.Image) – An instance of PIL Image representing the input image.
area (Tuple[int, int, int, int]) – A tuple representing the rectangular area to be censored in the format
(left, upper, right, lower)
.kwargs – Additional keyword arguments for customization.
- Returns:
An instance of PIL Image with the censored area.
- Return type:
Image.Image
ColorCensor
- class imgutils.operate.censor_.ColorCensor[source]
A class that performs color censoring by filling a specific area of an image with a solid color.
Inherits from
BaseCensor
.- censor_area(image: Image, area: Tuple[int, int, int, int], color: str = 'black', **kwargs) Image [source]
Fills a specific area within the image with a solid color for censoring.
- Parameters:
image (Image.Image) – An instance of PIL Image representing the input image.
area (Tuple[int, int, int, int]) – A tuple representing the rectangular area to be censored in the format
(left, upper, right, lower)
.color (str) – The color used to fill the censor area. Default is
black
. Can be any valid color name or RGB value.kwargs – Additional keyword arguments for customization.
- Returns:
An instance of PIL Image with the censored area filled with the specified color.
- Return type:
Image.Image
- Examples::
>>> from PIL import Image >>> from imgutils.operate import censor_areas >>> >>> origin = Image.open('genshin_post.jpg') >>> areas = [ # areas to censor >>> (967, 143, 1084, 261), >>> (246, 208, 331, 287), >>> (662, 466, 705, 514), >>> (479, 283, 523, 326) >>> ] >>> >>> # default >>> color_default = censor_areas(image, 'color', areas) >>> >>> # green >>> color_green = censor_areas(image, 'color', areas, color='green') >>> >>> # #ffff00 >>> color_ffff00 = censor_areas(image, 'color', areas, color='#ffff00')
This is the result:
BlurCensor
- class imgutils.operate.censor_.BlurCensor[source]
A class that performs blurring censoring on a specific area of an image.
Inherits from
BaseCensor
.- censor_area(image: Image, area: Tuple[int, int, int, int], radius: int = 4, **kwargs) Image [source]
Applies blurring censoring to a specific area within the image.
- Parameters:
image (Image.Image) – An instance of PIL Image representing the input image.
area (Tuple[int, int, int, int]) – A tuple representing the rectangular area to be censored in the format
(left, upper, right, lower)
.radius (int) – The radius of the blurring effect. Default is
4
.kwargs – Additional keyword arguments for customization.
- Returns:
An instance of PIL Image with the blurred area.
- Return type:
Image.Image
- Examples::
>>> from PIL import Image >>> from imgutils.operate import censor_areas >>> >>> origin = Image.open('genshin_post.jpg') >>> areas = [ # areas to censor >>> (967, 143, 1084, 261), >>> (246, 208, 331, 287), >>> (662, 466, 705, 514), >>> (479, 283, 523, 326) >>> ] >>> >>> # default >>> blur_4 = censor_areas(image, 'blur', areas) >>> >>> # radius=8 >>> blur_8 = censor_areas(image, 'blur', areas, radius=8) >>> >>> # radius=12 >>> blur_12 = censor_areas(image, 'blur', areas, radius=12)
This is the result:
PixelateCensor
- class imgutils.operate.censor_.PixelateCensor[source]
A class that performs pixelization censoring on a specific area of an image.
Inherits from
BaseCensor
.- censor_area(image: Image, area: Tuple[int, int, int, int], radius: int = 4, **kwargs) Image [source]
Applies pixelization censoring to a specific area within the image.
- Parameters:
image (Image.Image) – An instance of PIL Image representing the input image.
area (Tuple[int, int, int, int]) – A tuple representing the rectangular area to be censored in the format
(left, upper, right, lower)
.radius (int) – The radius of the pixelation effect. Default is
4
.kwargs – Additional keyword arguments for customization.
- Returns:
An instance of PIL Image with the pixelated area.
- Return type:
Image.Image
- Examples::
>>> from PIL import Image >>> from imgutils.operate import censor_areas >>> >>> origin = Image.open('genshin_post.jpg') >>> areas = [ # areas to censor >>> (967, 143, 1084, 261), >>> (246, 208, 331, 287), >>> (662, 466, 705, 514), >>> (479, 283, 523, 326) >>> ] >>> >>> # default >>> pixelate_4 = censor_areas(image, 'pixelate', areas) >>> >>> # radius=8 >>> pixelate_8 = censor_areas(image, 'pixelate', areas, radius=8) >>> >>> # radius=12 >>> pixelate_12 = censor_areas(image, 'pixelate', areas, radius=12)
This is the result:
register_censor_method
- imgutils.operate.censor_.register_censor_method(name: str, cls: Type[BaseCensor], *args, **kwargs)[source]
- Overview:
Registers a censor method for subsequent censoring tasks.
- Parameters:
name (str) – The name of the censor method.
cls (Type[BaseCensor]) – The class representing the censor method. It should be a subclass of BaseCensor.
args – Positional arguments to be passed when initializing the censor method.
kwargs – Keyword arguments to be passed when initializing the censor method.
- Raises:
KeyError – If the censor method name already exists.