@eryx/image Module

Image loading, encoding, pixel access, and small in-memory image operations.

Summary

Classes

width: number
height: number
format: PixelFormat
channels: number
stride: number
bounds: Rect
colorSpace: "srgb" | "linear"
metadata: ImageMetadata
buffer: buffer
pixelBuffer: buffer
closed: boolean
Image:close()()
Image:save(path: PathLike, options: EncodeOptions?)()
Image:encode(format: ImageFormat, options: EncodeOptions?)buffer
Image:crop(x: number, y: number, width: number, height: number)Image
Image:subimage(x: number, y: number, width: number, height: number)ImageView
Image:setPixel(x: number, y: number, color: Color)()
Image:resize(width: number, height: number, options: ResizeOptions?)Image
Image:thumbnail(maxWidth: number, maxHeight: number, options: ResizeOptions?)Image
Image:blit(src: Image, x: number, y: number, options: BlitOptions?)()
Image:draw(src: Image, srcRect: Rect, dstRect: Rect, options: DrawOptions?)()
Image:clear(color: Color)()
Image:fillRect(x: number, y: number, width: number, height: number, color: Color)()
Image:strokeRect(x: number, y: number, width: number, height: number, color: Color, thickness: number?)()
Image:line(x1: number, y1: number, x2: number, y2: number, color: Color, options: LineOptions?)()
Image:colorMatrix(matrix: { number })Image

Functions

image.open(path: PathLike, options: DecodeOptions?)Image
image.decode(data: buffer, options: DecodeOptions?)Image
image.new(width: number, height: number, options: NewImageOptions | PixelFormat)Image
image.fromBuffer(data: buffer, width: number, height: number, options: BufferImageOptions)Image
image.fromRGBABuffer(pixelData: buffer, width: number, height: number, channels: number)Image
image.rect(x: number, y: number, width: number, height: number)Rect

API Reference

Classes

Image

Properties

width: number
height: number
format: PixelFormat
channels: number
stride: number
bounds: Rect
colorSpace: "srgb" | "linear"
metadata: ImageMetadata
buffer: buffer
pixelBuffer: buffer
closed: boolean

Image:close

Image:close()()

Image:save

Image:save(path: PathLike, options: EncodeOptions?)()

Image:encode

Image:encode(format: ImageFormat, options: EncodeOptions?)buffer

Image:clone

Image:clone()Image

Image:crop

Image:crop(x: number, y: number, width: number, height: number)Image
Image:crop(rect: Rect)Image

Image:subimage

Image:subimage(x: number, y: number, width: number, height: number)ImageView
Image:subimage(rect: Rect)ImageView

Image:getPixel

Image:getPixel(x: number, y: number)Color

Image:setPixel

Image:setPixel(x: number, y: number, color: Color)()

Image:convert

Image:convert(format: PixelFormat, options: ConvertOptions?)Image

Image:resize

Image:resize(width: number, height: number, options: ResizeOptions?)Image

Image:thumbnail

Image:thumbnail(maxWidth: number, maxHeight: number, options: ResizeOptions?)Image

Image:flipX

Image:flipX()Image

Image:flipY

Image:flipY()Image

Image:rotate90

Image:rotate90()Image

Image:rotate180

Image:rotate180()Image

Image:rotate270

Image:rotate270()Image

Image:blit

Image:blit(src: Image, x: number, y: number, options: BlitOptions?)()
Image:blit(src: Image, srcRect: Rect, dstX: number, dstY: number, options: BlitOptions?)()

Image:draw

Image:draw(src: Image, srcRect: Rect, dstRect: Rect, options: DrawOptions?)()

Image:clear

Image:clear(color: Color)()

Image:fillRect

Image:fillRect(x: number, y: number, width: number, height: number, color: Color)()
Image:fillRect(rect: Rect, color: Color)()

Image:strokeRect

Image:strokeRect(x: number, y: number, width: number, height: number, color: Color, thickness: number?)()
Image:strokeRect(rect: Rect, color: Color, thickness: number?)()

Image:line

Image:line(x1: number, y1: number, x2: number, y2: number, color: Color, options: LineOptions?)()

Image:invert

Image:invert()Image

Image:grayscale

Image:grayscale()Image

Image:brightness

Image:brightness(amount: number)Image

Image:contrast

Image:contrast(amount: number)Image

Image:opacity

Image:opacity(amount: number)Image

Image:threshold

Image:threshold(value: number)Image

Image:colorMatrix

Image:colorMatrix(matrix: { number })Image

Functions

image.open

image.open(path: PathLike, options: DecodeOptions?)Image

image.decode

image.decode(data: buffer, options: DecodeOptions?)Image

image.new

image.new(width: number, height: number, options: NewImageOptions | PixelFormat)Image

image.fromBuffer

image.fromBuffer(data: buffer, width: number, height: number, options: BufferImageOptions)Image

image.fromRGBABuffer

image.fromRGBABuffer(pixelData: buffer, width: number, height: number, channels: number)Image

image.rgb

image.rgb(r: number, g: number, b: number)Color

image.rgba

image.rgba(r: number, g: number, b: number, a: number)Color

image.gray

image.gray(v: number, a: number?)Color

image.rect

image.rect(x: number, y: number, width: number, height: number)Rect

Types

PixelFormat

type PixelFormat = "rgba8" | "rgb8" | "gray8" | "grayAlpha8"

Color

type Color = { r: number, g: number, b: number, a: number }

Rect

type Rect = { x: number, y: number, width: number, height: number }
width: number
height: number

DecodeOptions

type DecodeOptions = { format: PixelFormat?, applyOrientation: boolean? }
format: PixelFormat?
applyOrientation: boolean?

NewImageOptions

type NewImageOptions = { format: PixelFormat?, color: Color? }
format: PixelFormat?
color: Color?

BufferImageOptions

type BufferImageOptions = { format: PixelFormat, stride: number?, copy: boolean? }
format: PixelFormat
stride: number?
copy: boolean?

ImageFormat

type ImageFormat = "png" | "jpeg" | "webp"

EncodeOptions

type EncodeOptions = { format: ImageFormat?, quality: number?, lossless: boolean?, progressive: boolean? }
format: ImageFormat?
quality: number?
lossless: boolean?
progressive: boolean?

ConvertOptions

type ConvertOptions = { background: Color? }
background: Color?

ResizeFilter

type ResizeFilter = "nearest"

ResizeOptions

type ResizeOptions = { filter: ResizeFilter?, fit: "stretch" | "contain" | "cover"?, position: "center" | "topLeft" | "top" | "bottom" | "left" | "right" | "bottomRight"?, background: Color? }
filter: ResizeFilter?
fit: "stretch" | "contain" | "cover"?
position: "center" | "topLeft" | "top" | "bottom" | "left" | "right" | "bottomRight"?
background: Color?

BlendMode

type BlendMode = "replace" | "normal" | "add" | "multiply" | "screen"

BlitOptions

type BlitOptions = { blend: BlendMode?, opacity: number?, tint: Color?, mask: Image? }
blend: BlendMode?
opacity: number?
tint: Color?
mask: Image?

DrawOptions

Implements: BlitOptions

LineOptions

type LineOptions = { thickness: number? }
thickness: number?

ExifTagValue

type ExifTagValue = number | string | buffer | { number }

ImageMetadata

type ImageMetadata = { format: string?, width: number?, height: number?, originalChannels: number?, source: string?, exif: { orientation: number?, make: string?, model: string?, software: string?, dateTime: string?, artist: string?, copyright: string?, tags: { ExifTagValue }? } }
format: string?
width: number?
height: number?
originalChannels: number?
source: string?
exif: { orientation: number?, make: string?, model: string?, software: string?, dateTime: string?, artist: string?, copyright: string?, tags: { ExifTagValue }? }

ImageView

Implements: Image