encode.Function.encodeAndCompress - MONOGRID/gainmap-js GitHub Wiki

@monogrid/gainmap-js / encode / encodeAndCompress

Function: encodeAndCompress()

encodeAndCompress(params): Promise<{ gainMap: CompressedImage; gainMapMax: [number, number, number]; gainMapMin: [number, number, number]; gamma: [number, number, number]; getMetadata: () => GainMapMetadata; hdr: DataTexture; hdrCapacityMax: number; hdrCapacityMin: number; offsetHdr: [number, number, number]; offsetSdr: [number, number, number]; rawGainMap: Uint8ClampedArray<ArrayBufferLike>; rawSDR: Uint8ClampedArray<ArrayBufferLike>; sdr: CompressedImage; }>

Defined in: src/encode/encode-and-compress.ts:50

Encodes a Gainmap starting from an HDR file into compressed file formats (image/jpeg, image/webp or image/png).

Uses encode internally, then pipes the results to compress.

Parameters

params

EncodingParametersWithCompression

Encoding Parameters

Returns

Promise<{ gainMap: CompressedImage; gainMapMax: [number, number, number]; gainMapMin: [number, number, number]; gamma: [number, number, number]; getMetadata: () => GainMapMetadata; hdr: DataTexture; hdrCapacityMax: number; hdrCapacityMin: number; offsetHdr: [number, number, number]; offsetSdr: [number, number, number]; rawGainMap: Uint8ClampedArray<ArrayBufferLike>; rawSDR: Uint8ClampedArray<ArrayBufferLike>; sdr: CompressedImage; }>

Remarks

if a renderer parameter is not provided This function will automatically dispose its "disposable" renderer, no need to dispose it manually later

Example

import { encodeAndCompress, findTextureMinMax } from '@monogrid/gainmap-js'
import { encodeJPEGMetadata } from '@monogrid/gainmap-js/libultrahdr'
import { EXRLoader } from 'three/examples/jsm/loaders/EXRLoader.js'

// load an HDR file
const loader = new EXRLoader()
const image = await loader.loadAsync('image.exr')

// find RAW RGB Max value of a texture
const textureMax = await findTextureMinMax(image)

// Encode the gainmap
const encodingResult = await encodeAndCompress({
  image,
  maxContentBoost: Math.max.apply(this, textureMax),
  mimeType: 'image/jpeg'
})

// embed the compressed images + metadata into a single
// JPEG file
const jpeg = await encodeJPEGMetadata({
  ...encodingResult,
  sdr: encodingResult.sdr,
  gainMap: encodingResult.gainMap
})

// `jpeg` will be an `Uint8Array` which can be saved somewhere

Throws

if the browser does not support createImageBitmap