bitmaptools – Collection of bitmap manipulation tools

bitmaptools.rotozoom(dest_bitmap: displayio.Bitmap, source_bitmap: displayio.Bitmap, *, ox: int, oy: int, dest_clip0: Tuple[int, int], dest_clip1: Tuple[int, int], px: int, py: int, source_clip0: Tuple[int, int], source_clip1: Tuple[int, int], angle: float, scale: float, skip_index: int)None

Inserts the source bitmap region into the destination bitmap with rotation (angle), scale and clipping (both on source and destination bitmaps).

Parameters
  • dest_bitmap (bitmap) – Destination bitmap that will be copied into

  • source_bitmap (bitmap) – Source bitmap that contains the graphical region to be copied

  • ox (int) – Horizontal pixel location in destination bitmap where source bitmap point (px,py) is placed

  • oy (int) – Vertical pixel location in destination bitmap where source bitmap point (px,py) is placed

  • dest_clip0 (Tuple[int,int]) – First corner of rectangular destination clipping region that constrains region of writing into destination bitmap

  • dest_clip1 (Tuple[int,int]) – Second corner of rectangular destination clipping region that constrains region of writing into destination bitmap

  • px (int) – Horizontal pixel location in source bitmap that is placed into the destination bitmap at (ox,oy)

  • py (int) – Vertical pixel location in source bitmap that is placed into the destination bitmap at (ox,oy)

  • source_clip0 (Tuple[int,int]) – First corner of rectangular source clipping region that constrains region of reading from the source bitmap

  • source_clip1 (Tuple[int,int]) – Second corner of rectangular source clipping region that constrains region of reading from the source bitmap

  • angle (float) – Angle of rotation, in radians (positive is clockwise direction)

  • scale (float) – Scaling factor

  • skip_index (int) – Bitmap palette index in the source that will not be copied, set to None to copy all pixels

bitmaptools.fill_region(dest_bitmap: displayio.Bitmap, x1: int, y1: int, x2: int, y2: int, value: int)None

Draws the color value into the destination bitmap within the rectangular region bounded by (x1,y1) and (x2,y2), exclusive.

Parameters
  • dest_bitmap (bitmap) – Destination bitmap that will be written into

  • x1 (int) – x-pixel position of the first corner of the rectangular fill region

  • y1 (int) – y-pixel position of the first corner of the rectangular fill region

  • x2 (int) – x-pixel position of the second corner of the rectangular fill region (exclusive)

  • y2 (int) – y-pixel position of the second corner of the rectangular fill region (exclusive)

  • value (int) – Bitmap palette index that will be written into the rectangular fill region in the destination bitmap

bitmaptools.draw_line(dest_bitmap: displayio.Bitmap, x1: int, y1: int, x2: int, y2: int, value: int)None

Draws a line into a bitmap specified two endpoints (x1,y1) and (x2,y2).

Parameters
  • dest_bitmap (bitmap) – Destination bitmap that will be written into

  • x1 (int) – x-pixel position of the line’s first endpoint

  • y1 (int) – y-pixel position of the line’s first endpoint

  • x2 (int) – x-pixel position of the line’s second endpoint

  • y2 (int) – y-pixel position of the line’s second endpoint

  • value (int) – Bitmap palette index that will be written into the line in the destination bitmap

bitmaptools.arrayblit(bitmap: displayio.Bitmap, data: _typing.ReadableBuffer, x1: int = 0, y1: int = 0, x2: Optional[int] = None, y2: Optional[int] = None, skip_index: Optional[int] = None)None

Inserts pixels from data into the rectangle of width×height pixels with the upper left corner at (x,y)

The values from data are taken modulo the number of color values avalable in the destination bitmap.

If x1 or y1 are not specified, they are taken as 0. If x2 or y2 are not specified, or are given as -1, they are taken as the width and height of the image.

The coordinates affected by the blit are x1 <= x < x2 and y1 <= y < y2.

data must contain at least as many elements as required. If it contains excess elements, they are ignored.

The blit takes place by rows, so the first elements of data go to the first row, the next elements to the next row, and so on.

Parameters
  • bitmap (displayio.Bitmap) – A writable bitmap

  • data (ReadableBuffer) – Buffer containing the source pixel values

  • x1 (int) – The left corner of the area to blit into (inclusive)

  • y1 (int) – The top corner of the area to blit into (inclusive)

  • x2 (int) – The right of the area to blit into (exclusive)

  • y2 (int) – The bottom corner of the area to blit into (exclusive)

  • skip_index (int) – Bitmap palette index in the source that will not be copied, set to None to copy all pixels

bitmaptools.readinto(bitmap: displayio.Bitmap, file: BinaryIO, bits_per_pixel: int, element_size: int = 1, reverse_pixels_in_element: bool = False, swap_bytes_in_element: bool = False, reverse_rows: bool = False)None

Reads from a binary file into a bitmap.

The file must be positioned so that it consists of bitmap.height rows of pixel data, where each row is the smallest multiple of element_size bytes that can hold bitmap.width pixels.

The bytes in an element can be optionally swapped, and the pixels in an element can be reversed. Also, the row loading direction can be reversed, which may be requires for loading certain bitmap files.

This function doesn’t parse image headers, but is useful to speed up loading of uncompressed image formats such as PCF glyph data.

Parameters
  • bitmap (displayio.Bitmap) – A writable bitmap

  • file (typing.BinaryIO) – A file opened in binary mode

  • bits_per_pixel (int) – Number of bits per pixel. Values 1, 2, 4, 8, 16, 24, and 32 are supported;

  • element_size (int) – Number of bytes per element. Values of 1, 2, and 4 are supported, except that 24 bits_per_pixel requires 1 byte per element.

  • reverse_pixels_in_element (bool) – If set, the first pixel in a word is taken from the Most Signficant Bits; otherwise, it is taken from the Least Significant Bits.

  • swap_bytes_in_element (bool) – If the element_size is not 1, then reverse the byte order of each element read.

  • reverse_rows (bool) – Reverse the direction of the row loading (required for some bitmap images).