Skip to content

pixano.core.image

Image(uri, bytes=None, preview_bytes=None, uri_prefix=None)

Bases: PixanoType, BaseModel

Image type using URI or bytes

Attributes:

Name Type Description
uri str

Image URI

bytes bytes

Image bytes

preview_bytes bytes

Image preview bytes

uri_prefix str

URI prefix for relative URIs

Attributes:

Name Type Description
uri str

Image URI

bytes bytes

Image bytes. Defaults to None.

preview_bytes bytes

Image preview bytes. Defaults to None.

uri_prefix str

URI prefix for relative URIs. Defaults to None.

Source code in pixano/core/image.py
def __init__(
    self,
    uri: str,
    bytes: bytes = None,
    preview_bytes: bytes = None,
    uri_prefix: str = None,
):
    """Initialize Image

    Attributes:
        uri (str): Image URI
        bytes (bytes, optional): Image bytes. Defaults to None.
        preview_bytes (bytes, optional): Image preview bytes. Defaults to None.
        uri_prefix (str, optional): URI prefix for relative URIs. Defaults to None.
    """

    # Define public attributes through Pydantic BaseModel
    super().__init__(
        uri=uri,
        bytes=bytes,
        preview_bytes=preview_bytes,
        uri_prefix=uri_prefix,
    )

complete_uri: str property

Return complete image URI using URI and URI prefix

Returns:

Type Description
str

Image URI

file_name: str property

Return image file name from URI

Returns:

Type Description
str

Image file name

height: int property

Return image height

Returns:

Type Description
int

Image height

path: Path property

Return image path using URI and URI prefix

Returns:

Type Description
Path

Image path

preview_url: str property

Return image preview base 64 URL

Returns:

Type Description
str

Image preview base 64 URL

size: list[int] property

Return image size

Returns:

Type Description
list[int]

Image size

url: str property

Return image base 64 URL

Returns:

Type Description
str

Image base 64 URL

width: int property

Return image width

Returns:

Type Description
int

Image width

as_cv2()

Open image as OpenCV

Returns:

Type Description
ndarray

Image as OpenCV

Source code in pixano/core/image.py
def as_cv2(self) -> np.ndarray:
    """Open image as OpenCV

    Returns:
        np.ndarray: Image as OpenCV
    """

    im_arr = np.frombuffer(self.open().read(), dtype=np.uint8)
    return cv2.imdecode(im_arr, cv2.IMREAD_COLOR)

as_pillow()

Open image as Pillow

Returns:

Type Description
Image

Image as Pillow

Source code in pixano/core/image.py
def as_pillow(self) -> PILImage.Image:
    """Open image as Pillow

    Returns:
        PIL.Image.Image: Image as Pillow
    """

    return PILImage.open(self.open()).convert("RGB")

display(preview=False)

Display image

Parameters:

Name Type Description Default
preview bool

True to display image preview instead of full image. Defaults to False.

False

Returns:

Type Description
Image

Image as IPython Display

Source code in pixano/core/image.py
def display(self, preview=False) -> IPyImage:
    """Display image

    Args:
        preview (bool, optional): True to display image preview instead of full image. Defaults to False.

    Returns:
        IPython.core.display.Image: Image as IPython Display
    """

    im_bytes = self.preview_bytes if preview else self.get_bytes()
    return IPyImage(url=binary_to_url(im_bytes), format=IPyImage(im_bytes).format)

get_bytes()

Get image bytes from attribute or from reading file from URI

Returns:

Type Description
bytes

Image bytes

Source code in pixano/core/image.py
def get_bytes(self) -> bytes:
    """Get image bytes from attribute or from reading file from URI

    Returns:
        bytes: Image bytes
    """

    if self.bytes is not None:
        return self.bytes
    if self.uri is not None:
        with self.open() as f:
            return f.read()
    return None

open()

Open image

Returns:

Type Description
IO

Opened image

Source code in pixano/core/image.py
def open(self) -> IO:
    """Open image

    Returns:
        IO: Opened image
    """

    complete_uri = self.complete_uri
    if urlparse(complete_uri).scheme == "s3":
        presigned_url = S3Path.from_uri(complete_uri).get_presigned_url()
        return urlopen(presigned_url)
    return urlopen(complete_uri)

to_struct() staticmethod

Return Image type as PyArrow Struct

Returns:

Type Description
StructType

Custom type corresponding PyArrow Struct

Source code in pixano/core/image.py
@staticmethod
def to_struct() -> pa.StructType:
    """Return Image type as PyArrow Struct

    Returns:
        pa.StructType: Custom type corresponding PyArrow Struct
    """

    return pa.struct(
        [
            pa.field("uri", pa.utf8()),
            pa.field("bytes", pa.binary()),
            pa.field("preview_bytes", pa.binary()),
        ]
    )