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