useImageMode @astryx-svelte/core v0.3.0 · hooks

Usage

Detects whether an image is predominantly dark or light by sampling pixels via OffscreenCanvas. Uses APCA perceptual lightness (sRGB linearization + power curve) for accurate detection, especially on saturated colors. Runs entirely off the paint path: no visible canvas, no layout thrash. Supports regional sampling for detecting luminance where text overlays will appear. Returns null while loading and falls back gracefully on CORS or network errors.
ts
import { hooks } from '@astryx-svelte/core/hooks';

Best practices

GuidancePractices
DoPair with MediaTheme to automatically adapt text color over dynamic background images.
DoUse the region option to sample only the area where text overlays will appear for more accurate results.
Don'tUse for images that change rapidly (e.g., video frames); each src change triggers a new fetch and analysis.

Parameters

ParameterTypeDefaultDescription
src Required () => string | nullImage source URL to analyze. When null/undefined, returns the fallback value.
options () => UseImageModeOptionsOptional configuration for image analysis.
options.region ImageSampleRegionRegion to sample within the image using normalized 0-1 coordinates ({ x, y, width, height }). Defaults to the full image.
options.threshold number0.5Luminance threshold for the dark/light split. Below = dark, above = light.
options.fallback 'dark' | 'light'nullFallback value while loading or on error.

Returns

FieldTypeDefaultDescription
mode 'dark' | 'light'Detected luminance mode of the image. Returns null while loading or if src is null/undefined.