1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-25 17:48:07 +02:00

Adds color components decoding to the JPEG

This commit is contained in:
Yury Delendik 2014-06-03 08:51:57 -05:00
parent 2449142fc3
commit 6235e3a61c
2 changed files with 32 additions and 5 deletions

View file

@ -878,9 +878,27 @@ var JpegStream = (function JpegStreamClosure() {
}
try {
var jpegImage = new JpegImage();
if (this.colorTransform != -1) {
jpegImage.colorTransform = this.colorTransform;
// checking if values needs to be transformed before conversion
if (this.dict && isArray(this.dict.get('Decode'))) {
var decodeArr = this.dict.get('Decode');
var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
var decodeArrLength = decodeArr.length;
var transform = new Int32Array(decodeArrLength);
var transformNeeded = false;
var maxValue = (1 << bitsPerComponent) - 1;
for (var i = 0; i < decodeArrLength; i += 2) {
transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;
transform[i + 1] = (decodeArr[i] * maxValue) | 0;
if (transform[i] !== 256 || transform[i + 1] !== 0) {
transformNeeded = true;
}
}
if (transformNeeded) {
jpegImage.decodeTransform = transform;
}
}
jpegImage.parse(this.bytes);
var data = jpegImage.getData(this.drawWidth, this.drawHeight,
/* forceRGBoutput = */true);