diff --git a/odoo-stubs/tools/image.pyi b/odoo-stubs/tools/image.pyi index d77ccdb..0bcd324 100644 --- a/odoo-stubs/tools/image.pyi +++ b/odoo-stubs/tools/image.pyi @@ -1,31 +1,35 @@ from PIL import IcoImagePlugin as IcoImagePlugin, ImageOps as ImageOps -from typing import Any +from typing import Any, Iterable, Literal -FILETYPE_BASE64_MAGICWORD: Any +from PIL.Image import Image + +FILETYPE_BASE64_MAGICWORD: dict[bytes, str] EXIF_TAG_ORIENTATION: int -EXIF_TAG_ORIENTATION_TO_TRANSPOSE_METHODS: Any +EXIF_TAG_ORIENTATION_TO_TRANSPOSE_METHODS: dict[int, list] IMAGE_MAX_RESOLUTION: float class ImageProcess: - base64_source: Any + base64_source: bytes operationsCount: int - image: bool - original_format: Any - def __init__(self, base64_source, verify_resolution: bool = ...) -> None: ... - def image_base64(self, quality: int = ..., output_format: str = ...): ... - def resize(self, max_width: int = ..., max_height: int = ...): ... - def crop_resize(self, max_width, max_height, center_x: float = ..., center_y: float = ...): ... - def colorize(self): ... + image: Image | Literal[False] + original_format: str + def __init__(self, base64_source: bytes, verify_resolution: bool = ...) -> None: ... + def image_quality(self, quality: int = ..., output_format: str = ...) -> bytes | Literal[False]: ... + def image_base64(self, quality: int = ..., output_format: str = ...) -> bytes | Literal[False]: ... + def resize(self, max_width: int = ..., max_height: int = ...) -> ImageProcess: ... + def crop_resize(self, max_width: int, max_height: int, center_x: float = ..., center_y: float = ...) -> ImageProcess: ... + def colorize(self) -> ImageProcess: ... -def image_process(base64_source, size=..., verify_resolution: bool = ..., quality: int = ..., crop: Any | None = ..., colorize: bool = ..., output_format: str = ...): ... -def average_dominant_color(colors, mitigate: int = ..., max_margin: int = ...): ... -def image_fix_orientation(image): ... -def base64_to_image(base64_source): ... -def image_to_base64(image, format, **params): ... -def is_image_size_above(base64_source_1, base64_source_2): ... -def image_guess_size_from_field_name(field_name): ... -def image_data_uri(base64_source): ... -def get_saturation(rgb): ... -def get_lightness(rgb): ... -def hex_to_rgb(hx): ... -def rgb_to_hex(rgb): ... +def image_process(base64_source: bytes, size: tuple[int, int] = ..., verify_resolution: bool = ..., quality: int = ..., crop: str | None = ..., colorize: bool = ..., output_format: str = ...) -> bytes: ... +def average_dominant_color(colors: list[tuple[Any, Any]], mitigate: int = ..., max_margin: int = ...) -> tuple[Any, Any]: ... +def image_fix_orientation(image: Image) -> Image: ... +def base64_to_image(base64_source: bytes) -> Image: ... +def image_apply_opt(image: Image, format: str | None, **params) -> bytes: ... +def image_to_base64(image: Image, format: str | None, **params) -> bytes: ... +def is_image_size_above(base64_source_1: bytes, base64_source_2: bytes) -> bool: ... +def image_guess_size_from_field_name(field_name: str) -> tuple[int, int]: ... +def image_data_uri(base64_source: bytes) -> str: ... +def get_saturation(rgb: Iterable[int]) -> float: ... +def get_lightness(rgb: Iterable[int]) -> float: ... +def hex_to_rgb(hx: str) -> tuple[int, int, int]: ... +def rgb_to_hex(rgb: Iterable[int]) -> str: ...