15.1. Image loading, writing, and resizing (stb_image)

Low-level image I/O and resizing bindings for stb_image, stb_image_write, and stb_image_resize2.

15.1.1. Enumerations

stbir_datatype

Pixel data type for resize operations.

Values:
  • STBIR_TYPE_UINT8 = 0 - 8-bit unsigned integer.

  • STBIR_TYPE_UINT8_SRGB = 1 - 8-bit unsigned integer with sRGB gamma.

  • STBIR_TYPE_UINT8_SRGB_ALPHA = 2 - 8-bit unsigned integer with sRGB gamma and linear alpha.

  • STBIR_TYPE_UINT16 = 3 - 16-bit unsigned integer.

  • STBIR_TYPE_FLOAT = 4 - 32-bit float.

  • STBIR_TYPE_HALF_FLOAT = 5 - 16-bit float (half precision).

stbir_edge

Edge handling mode for resize operations.

Values:
  • STBIR_EDGE_CLAMP = 0 - Clamp to edge pixels.

  • STBIR_EDGE_REFLECT = 1 - Reflect at edges.

  • STBIR_EDGE_WRAP = 2 - Wrap around (tile).

  • STBIR_EDGE_ZERO = 3 - Use zero for out-of-bounds pixels.

stbir_filter

Resampling filter for resize operations.

Values:
  • STBIR_FILTER_DEFAULT = 0 - Default filter (Catmull-Rom for downscale, cubic B-spline for upscale).

  • STBIR_FILTER_BOX = 1 - Box filter (nearest-neighbor averaging).

  • STBIR_FILTER_TRIANGLE = 2 - Triangle (bilinear) filter.

  • STBIR_FILTER_CUBICBSPLINE = 3 - Cubic B-spline filter.

  • STBIR_FILTER_CATMULLROM = 4 - Catmull-Rom filter.

  • STBIR_FILTER_MITCHELL = 5 - Mitchell-Netravali filter.

  • STBIR_FILTER_POINT_SAMPLE = 6 - Point sampling (nearest neighbor, no filtering).

  • STBIR_FILTER_OTHER = 7 - Reserved for custom filters.

stbir_pixel_layout

Pixel channel layout for resize operations.

Values:
  • STBIR_1CHANNEL = 1 - Single channel.

  • STBIR_2CHANNEL = 2 - Two channels.

  • STBIR_RGB = 3 - RGB layout.

  • STBIR_BGR = 0 - BGR layout.

  • STBIR_4CHANNEL = 5 - Four channels.

  • STBIR_RGBA = 4 - RGBA layout.

  • STBIR_BGRA = 6 - BGRA layout.

  • STBIR_ARGB = 7 - ARGB layout.

  • STBIR_ABGR = 8 - ABGR layout.

  • STBIR_RA = 9 - Red-Alpha layout.

  • STBIR_AR = 10 - Alpha-Red layout.

  • STBIR_RGBA_PM = 11 - RGBA with premultiplied alpha.

  • STBIR_BGRA_PM = 12 - BGRA with premultiplied alpha.

  • STBIR_ARGB_PM = 13 - ARGB with premultiplied alpha.

  • STBIR_ABGR_PM = 14 - ABGR with premultiplied alpha.

  • STBIR_RA_PM = 15 - Red-Alpha with premultiplied alpha.

  • STBIR_AR_PM = 16 - Alpha-Red with premultiplied alpha.

15.1.2. Image loading

stbi_load(filename: string; x: int?; y: int?; comp: int?; req_comp: int): uint8?

Load an image from file, returning pixel data as uint8.

Arguments:
  • filename : string implicit

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

  • req_comp : int

stbi_load_16(filename: string; x: int?; y: int?; comp: int?; req_comp: int): uint16?

Load an image from file as 16-bit unsigned integer data.

Arguments:
  • filename : string implicit

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

  • req_comp : int

stbi_load_16_from_memory(buffer: uint8 const?; len: int; x: int?; y: int?; comp: int?; req_comp: int): uint16?

Load an image from a memory buffer as 16-bit unsigned integer data.

Arguments:
  • buffer : uint8? implicit

  • len : int

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

  • req_comp : int

stbi_load_from_memory(buffer: uint8 const?; len: int; x: int?; y: int?; comp: int?; req_comp: int): uint8?

Load an image from a memory buffer as uint8.

Arguments:
  • buffer : uint8? implicit

  • len : int

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

  • req_comp : int

stbi_load_gif_from_memory(buffer: uint8 const?; len: int; delays: int??; x: int?; y: int?; z: int?; comp: int?; req_comp: int): uint8?

Load all frames of an animated GIF from a memory buffer.

Arguments:
  • buffer : uint8? implicit

  • len : int

  • delays : int?? implicit

  • x : int? implicit

  • y : int? implicit

  • z : int? implicit

  • comp : int? implicit

  • req_comp : int

stbi_loadf(filename: string; x: int?; y: int?; comp: int?; req_comp: int): float?

Load an image from file as HDR float data.

Arguments:
  • filename : string implicit

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

  • req_comp : int

stbi_loadf_from_memory(buffer: uint8 const?; len: int; x: int?; y: int?; comp: int?; req_comp: int): float?

Load an image from a memory buffer as HDR float data.

Arguments:
  • buffer : uint8? implicit

  • len : int

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

  • req_comp : int

15.1.3. Image info

stbi_info(filename: string; x: int?; y: int?; comp: int?): int

Query image dimensions and channel count from a file without loading pixel data.

Arguments:
  • filename : string implicit

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

stbi_info_from_memory(buffer: uint8 const?; len: int; x: int?; y: int?; comp: int?): int

Query image dimensions and channel count from a memory buffer without decoding.

Arguments:
  • buffer : uint8? implicit

  • len : int

  • x : int? implicit

  • y : int? implicit

  • comp : int? implicit

stbi_is_16_bit(filename: string): int

Check if a file contains 16-bit image data.

Arguments:
  • filename : string implicit

stbi_is_16_bit_from_memory(buffer: uint8 const?; len: int): int

Check if a memory buffer contains 16-bit image data.

Arguments:
  • buffer : uint8? implicit

  • len : int

stbi_is_hdr(filename: string): int

Check if a file contains HDR image data.

Arguments:
  • filename : string implicit

stbi_is_hdr_from_memory(buffer: uint8 const?; len: int): int

Check if a memory buffer contains HDR image data.

Arguments:
  • buffer : uint8? implicit

  • len : int

15.1.4. Memory management

stbi_failure_reason(): string

Return a description of the last load failure.

stbi_image_free(retval_from_stbi_load: void?)

Free pixel data allocated by stbi_load and related functions.

Arguments:
  • retval_from_stbi_load : void? implicit

15.1.5. Load settings

stbi_convert_iphone_png_to_rgb(flag: int)

Set whether to convert iPhone PNG format to standard RGB.

Arguments:
  • flag : int

stbi_set_flip_vertically_on_load(flag: int)

Set whether loaded images should be flipped vertically.

Arguments:
  • flag : int

stbi_set_unpremultiply_on_load(flag: int)

Set whether to unpremultiply alpha on load (iPhone PNG).

Arguments:
  • flag : int

15.1.6. HDR gamma and scale

stbi_hdr_to_ldr_gamma(gamma: float)

Set gamma value for HDR to LDR conversion.

Arguments:
  • gamma : float

stbi_hdr_to_ldr_scale(scale: float)

Set scale factor for HDR to LDR conversion.

Arguments:
  • scale : float

stbi_ldr_to_hdr_gamma(gamma: float)

Set gamma value for LDR to HDR conversion.

Arguments:
  • gamma : float

stbi_ldr_to_hdr_scale(scale: float)

Set scale factor for LDR to HDR conversion.

Arguments:
  • scale : float

15.1.7. File writing

stbi_write_bmp(filename: string; x: int; y: int; comp: int; data: void?): int

Write image data to a BMP file.

Arguments:
  • filename : string implicit

  • x : int

  • y : int

  • comp : int

  • data : void? implicit

stbi_write_hdr(filename: string; x: int; y: int; comp: int; data: float const?): int

Write HDR float image data to an HDR file.

Arguments:
  • filename : string implicit

  • x : int

  • y : int

  • comp : int

  • data : float? implicit

stbi_write_jpg(filename: string; x: int; y: int; comp: int; data: void?; quality: int): int

Write image data to a JPEG file with specified quality.

Arguments:
  • filename : string implicit

  • x : int

  • y : int

  • comp : int

  • data : void? implicit

  • quality : int

stbi_write_png(filename: string; x: int; y: int; comp: int; data: void?; stride_bytes: int): int

Write image data to a PNG file.

Arguments:
  • filename : string implicit

  • x : int

  • y : int

  • comp : int

  • data : void? implicit

  • stride_bytes : int

stbi_write_tga(filename: string; x: int; y: int; comp: int; data: void?): int

Write image data to a TGA file.

Arguments:
  • filename : string implicit

  • x : int

  • y : int

  • comp : int

  • data : void? implicit

15.1.8. Write to memory

stbi_write_bmp_to_memory(x: int; y: int; comp: int; data: void?; block: block<(array<uint8>#):void>)

Encode image data as BMP to a memory buffer.

Arguments:
  • x : int

  • y : int

  • comp : int

  • data : void? implicit

  • block : block<(array<uint8>#):void> implicit

stbi_write_jpg_to_memory(x: int; y: int; comp: int; data: void?; quality: int; block: block<(array<uint8>#):void>)

Encode image data as JPEG to a memory buffer.

Arguments:
  • x : int

  • y : int

  • comp : int

  • data : void? implicit

  • quality : int

  • block : block<(array<uint8>#):void> implicit

stbi_write_png_to_memory(x: int; y: int; comp: int; data: void?; stride_bytes: int; block: block<(array<uint8>#):void>)

Encode image data as PNG to a memory buffer.

Arguments:
  • x : int

  • y : int

  • comp : int

  • data : void? implicit

  • stride_bytes : int

  • block : block<(array<uint8>#):void> implicit

stbi_write_tga_to_memory(x: int; y: int; comp: int; data: void?; block: block<(array<uint8>#):void>)

Encode image data as TGA to a memory buffer.

Arguments:
  • x : int

  • y : int

  • comp : int

  • data : void? implicit

  • block : block<(array<uint8>#):void> implicit

15.1.9. Write settings

stbi_flip_vertically_on_write(flag: int)

Set whether to flip images vertically when writing.

Arguments:
  • flag : int

stbi_write_get_force_png_filter(): int

Get current PNG filter mode setting.

stbi_write_get_png_compression_level(): int

Get current PNG compression level.

stbi_write_get_tga_with_rle(): int

Get current TGA RLE compression setting.

stbi_write_set_force_png_filter(filter: int)

Force a specific PNG filter mode (-1 for auto).

Arguments:
  • filter : int

stbi_write_set_png_compression_level(level: int)

Set PNG compression level (default 8).

Arguments:
  • level : int

stbi_write_set_tga_with_rle(rle: int)

Set whether TGA files use RLE compression.

Arguments:
  • rle : int

15.1.10. Image resizing

stbir_resize(input_pixels: void?; input_w: int; input_h: int; input_stride_in_bytes: int; output_pixels: void?; output_w: int; output_h: int; output_stride_in_bytes: int; pixel_layout: stbir_pixel_layout; data_type: stbir_datatype; edge: stbir_edge; filter: stbir_filter): void?

Resize image with full control over data type, layout, edge mode, and filter.

Arguments:
  • input_pixels : void? implicit

  • input_w : int

  • input_h : int

  • input_stride_in_bytes : int

  • output_pixels : void? implicit

  • output_w : int

  • output_h : int

  • output_stride_in_bytes : int

  • pixel_layout : stbir_pixel_layout

  • data_type : stbir_datatype

  • edge : stbir_edge

  • filter : stbir_filter

stbir_resize_float_linear(input_pixels: float const?; input_w: int; input_h: int; input_stride_in_bytes: int; output_pixels: float?; output_w: int; output_h: int; output_stride_in_bytes: int; pixel_type: stbir_pixel_layout): float?

Resize a float image in linear color space.

Arguments:
  • input_pixels : float? implicit

  • input_w : int

  • input_h : int

  • input_stride_in_bytes : int

  • output_pixels : float? implicit

  • output_w : int

  • output_h : int

  • output_stride_in_bytes : int

  • pixel_type : stbir_pixel_layout

stbir_resize_uint8_linear(input_pixels: uint8 const?; input_w: int; input_h: int; input_stride_in_bytes: int; output_pixels: uint8?; output_w: int; output_h: int; output_stride_in_bytes: int; pixel_type: stbir_pixel_layout): uint8?

Resize a uint8 image in linear color space.

Arguments:
  • input_pixels : uint8? implicit

  • input_w : int

  • input_h : int

  • input_stride_in_bytes : int

  • output_pixels : uint8? implicit

  • output_w : int

  • output_h : int

  • output_stride_in_bytes : int

  • pixel_type : stbir_pixel_layout

stbir_resize_uint8_srgb(input_pixels: uint8 const?; input_w: int; input_h: int; input_stride_in_bytes: int; output_pixels: uint8?; output_w: int; output_h: int; output_stride_in_bytes: int; pixel_type: stbir_pixel_layout): uint8?

Resize a uint8 image with sRGB gamma correction.

Arguments:
  • input_pixels : uint8? implicit

  • input_w : int

  • input_h : int

  • input_stride_in_bytes : int

  • output_pixels : uint8? implicit

  • output_w : int

  • output_h : int

  • output_stride_in_bytes : int

  • pixel_type : stbir_pixel_layout