type

bun.Image.ErrorCode

type ErrorCode =
| 'ERR_IMAGE_FORMAT_UNSUPPORTED'
| 'ERR_IMAGE_TOO_MANY_PIXELS'
| 'ERR_IMAGE_DECODE_FAILED'
| 'ERR_IMAGE_ENCODE_FAILED'
| 'ERR_IMAGE_UNKNOWN_FORMAT'
| 'ERR_OUT_OF_MEMORY'
| 'ERR_INVALID_STATE'

Stable error.code values set on rejections from Bun.Image terminals. Branch on these instead of parsing the message.

  • ERR_IMAGE_FORMAT_UNSUPPORTED — the requested format isn't available on this machine (HEIC/AVIF without the OS codec, TIFF on Linux). Catch this to fall back to a portable format.
  • ERR_IMAGE_TOO_MANY_PIXELS — header dimensions or resize output exceed maxPixels, a row of a PNG takes 4 GiB or more, or a path-backed input is over the 256 MiB cap.
  • ERR_IMAGE_DECODE_FAILED / ERR_IMAGE_ENCODE_FAILED — codec error. A damaged JPEG that libjpeg-turbo decodes with only a warning (stray bytes, a missing end marker, truncated scan data) does not reject. Blocks with no data come back flat grey. A PNG with a wrong CRC or Adler-32 does not reject either: Bun verifies neither. A PNG that ends before its last row, or inside the data of the IDAT chunk that holds it, rejects.
  • ERR_IMAGE_UNKNOWN_FORMAT — input bytes didn't match any sniffer.
  • ERR_OUT_OF_MEMORY — there is no memory for the image, or for a buffer that its decode or encode needs.
  • ERR_INVALID_STATE — the input ArrayBuffer was transferred between construction and the terminal call.
  • File-backed inputs surface the underlying syscall code (ENOENT, EACCES, …) directly.