Skip to content

vllm.multimodal.image

Functions:

  • normalize_image

    Normalize EXIF orientation so the pixel data matches visual display.

  • rescale_image_size

    Rescale the dimensions of an image by a constant factor.

  • rgba_to_rgb

    Convert an RGBA image to RGB with filled background color.

_has_transparency(image)

Detect whether an image carries transparency data (RGBA, LA, PA, or tRNS chunk in P/L/RGB PNGs).

Source code in vllm/multimodal/image.py
def _has_transparency(image: Image.Image) -> bool:
    """Detect whether an image carries transparency data (RGBA, LA, PA,
    or tRNS chunk in P/L/RGB PNGs)."""
    if image.mode in ("RGBA", "LA", "PA"):
        return True
    return "transparency" in getattr(image, "info", {})

normalize_image(image)

Normalize EXIF orientation so the pixel data matches visual display.

Source code in vllm/multimodal/image.py
def normalize_image(image: Image.Image) -> Image.Image:
    """Normalize EXIF orientation so the pixel data matches visual display."""
    with contextlib.suppress(Exception):
        image = ImageOps.exif_transpose(image)
    return image

rescale_image_size(image, size_factor, transpose=-1)

Rescale the dimensions of an image by a constant factor.

Source code in vllm/multimodal/image.py
def rescale_image_size(
    image: Image.Image, size_factor: float, transpose: int = -1
) -> Image.Image:
    """Rescale the dimensions of an image by a constant factor."""
    new_width = int(image.width * size_factor)
    new_height = int(image.height * size_factor)
    image = image.resize((new_width, new_height))
    if transpose >= 0:
        image = image.transpose(Image.Transpose(transpose))
    return image

rgba_to_rgb(image, background_color=(255, 255, 255))

Convert an RGBA image to RGB with filled background color.

Source code in vllm/multimodal/image.py
def rgba_to_rgb(
    image: Image.Image,
    background_color: tuple[int, int, int] | list[int] = (255, 255, 255),
) -> Image.Image:
    """Convert an RGBA image to RGB with filled background color."""
    assert image.mode == "RGBA"
    converted = Image.new("RGB", image.size, background_color)
    converted.paste(image, mask=image.split()[3])  # 3 is the alpha channel
    return converted