-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathjpegxl.js
More file actions
71 lines (65 loc) · 1.77 KB
/
jpegxl.js
File metadata and controls
71 lines (65 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
const codecModule = require("@cornerstonejs/codec-libjxl");
const codecFactory = require("./codecFactory");
/**
* @type {CodecWrapper}
*/
const codecWrapper = {
codec: undefined,
Decoder: undefined,
Encoder: undefined,
encoderName: "JpegXLEncoder",
decoderName: "JpegXLDecoder",
};
/**
* Decode imageFrame using jpegls decoder.
*
* @param {TypedArray} imageFrame to decode.
* @param {ExtendedImageInfo} imageInfo image info options.
* @returns Object containing decoded image frame and imageInfo (current) data.
*/
async function decode(imageFrame, imageInfo) {
return codecFactory.runProcess(
codecWrapper,
codecModule,
// Base module loads it's own codecModule
undefined,
codecWrapper.decoderName,
(context) => {
return codecFactory.decode(context, codecWrapper, imageFrame, imageInfo);
}
);
}
/**
* Encode imageFrame to jpegls format.
*
* @param {TypedArray} imageFrame to encode.
* @param {ExtendedImageInfo} imageInfo image info options.
* @param {Object} options encode option.
* @returns Object containing encoded image frame and imageInfo (current) data
*/
async function encode(imageFrame, imageInfo, options = {}) {
return codecFactory.runProcess(
codecWrapper,
codecModule,
undefined,
codecWrapper.encoderName,
(context) => {
function beforeEncode(encoderInstance) {
encoderInstance.setNearLossless(0);
}
return codecFactory.encode(
context,
codecWrapper,
imageFrame,
imageInfo,
Object.assign({}, options, { beforeEncode })
);
}
);
}
function getPixelData(imageFrame, imageInfo) {
return codecFactory.getPixelData(imageFrame, imageInfo);
}
exports.decode = decode;
exports.encode = encode;
exports.getPixelData = getPixelData;