method

buffer.File.image

): Image;

Wrap this blob in a Bun.Image pipeline. Equivalent to new Bun.Image(this, options).

Referenced types

interface ConstructorOptions

  • autoOrient?: boolean

    Apply EXIF Orientation (JPEG) before any other operation.

  • maxPixels?: number

    Reject inputs whose width × height exceeds this many pixels. The check runs after the header is read but before any pixel buffer is allocated, so a tiny file claiming a huge canvas is refused cheaply.

namespace Image

  • interface ConstructorOptions

    • autoOrient?: boolean

      Apply EXIF Orientation (JPEG) before any other operation.

    • maxPixels?: number

      Reject inputs whose width × height exceeds this many pixels. The check runs after the header is read but before any pixel buffer is allocated, so a tiny file claiming a huge canvas is refused cheaply.

  • interface Metadata

  • interface ModulateOptions

    • brightness?: number

      Multiplier; 1 leaves brightness unchanged.

    • saturation?: number

      0 = greyscale, 1 = unchanged, >1 = more saturated.

  • interface ResizeOptions

    • filter?: Filter

      Resampling kernel.

    • fit?: 'fill' | 'inside'

      "fill" stretches to exactly width×height. "inside" preserves aspect ratio so the result fits within width×height.

    • withoutEnlargement?: boolean

      Never upscale — if the source is already smaller, leave it.

  • type ErrorCode =
    | 'ERR_IMAGE_FORMAT_UNSUPPORTED'
    | 'ERR_IMAGE_TOO_MANY_PIXELS'
    | 'ERR_IMAGE_DECODE_FAILED'
    | 'ERR_IMAGE_ENCODE_FAILED'
    | 'ERR_IMAGE_UNKNOWN_FORMAT'
    | '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, or a path-backed input is over the 256 MiB cap.
    • ERR_IMAGE_DECODE_FAILED / ERR_IMAGE_ENCODE_FAILED — codec error.
    • ERR_IMAGE_UNKNOWN_FORMAT — input bytes didn't match any sniffer.
    • 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.
  • type Filter =
    | 'nearest'
    | 'box'
    | 'bilinear'
    | 'linear'
    | 'cubic'
    | 'mitchell'
    | 'lanczos2'
    | 'lanczos3'
    | 'mks2013'
    | 'mks2021'
  • type Format =
    | 'jpeg'
    | 'png'
    | 'webp'
    | 'heic'
    | 'avif'
    | 'bmp'
    | 'tiff'
    | 'gif'

    bmp/tiff/gif are decode-only — metadata().format may report them but there are no .bmp()/.tiff()/.gif() encoder methods. tiff decode rejects with error.code === "ERR_IMAGE_FORMAT_UNSUPPORTED" on Linux; gif decodes the first frame everywhere.