@abasb75/jpeg-lossless-decoder
Version:
A JavaScript JPEG Lossless decoder.
42 lines (41 loc) • 1.2 kB
JavaScript
// https://stackoverflow.com/a/12588826
export var createArray = function () {
var dimensions = [];
for (var _i = 0; _i < arguments.length; _i++) {
dimensions[_i] = arguments[_i];
}
if (dimensions.length > 1) {
var dim = dimensions[0];
var rest = dimensions.slice(1);
var newArray = [];
for (var i = 0; i < dim; i++) {
newArray[i] = createArray.apply(void 0, rest);
}
return newArray;
}
else {
return Array(dimensions[0]).fill(undefined);
}
};
// http://stackoverflow.com/questions/18638900/javascript-crc32
export var makeCRCTable = function () {
var c;
var crcTable = [];
for (var n = 0; n < 256; n++) {
c = n;
for (var k = 0; k < 8; k++) {
c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
}
crcTable[n] = c;
}
return crcTable;
};
export var crcTable = makeCRCTable();
export var crc32 = function (buffer) {
var uint8view = new Uint8Array(buffer);
var crc = 0 ^ -1;
for (var i = 0; i < uint8view.length; i++) {
crc = (crc >>> 8) ^ crcTable[(crc ^ uint8view[i]) & 0xff];
}
return (crc ^ -1) >>> 0;
};