mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Jpeg encoded with RGB -instead of YCbCr- write the components index as "RGB" in ASCII to say it so
On ISO/IEC 10918-6:2013 (E), section 6.1: (http://www.itu.int/rec/T-REC-T.872-201206-I/en)
"Images encoded with three components are assumed to be RGB data encoded as YCbCr unless the image contains an APP14 marker segment as specified in 6.5.3, in which case the colour encoding is considered either RGB or YCbCr according to the application data of the APP14 marker segment"
But common jpeg libraries consider RGB too if components index are ASCII R (0x52), G (0x47) and B (0x42): 50861048
Issue #11931
This commit is contained in:
parent
96ad60f116
commit
802aa14a99
4 changed files with 19 additions and 1 deletions
|
@ -991,8 +991,10 @@ var JpegImage = (function JpegImageClosure() {
|
|||
var components = [],
|
||||
component;
|
||||
for (i = 0; i < selectorsCount; i++) {
|
||||
var componentIndex = frame.componentIds[data[offset++]];
|
||||
const index = data[offset++];
|
||||
var componentIndex = frame.componentIds[index];
|
||||
component = frame.components[componentIndex];
|
||||
component.index = index;
|
||||
var tableSpec = data[offset++];
|
||||
component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
|
||||
component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
|
||||
|
@ -1088,6 +1090,7 @@ var JpegImage = (function JpegImageClosure() {
|
|||
}
|
||||
|
||||
this.components.push({
|
||||
index: component.index,
|
||||
output: buildComponentData(frame, component),
|
||||
scaleX: component.h / frame.maxH,
|
||||
scaleY: component.v / frame.maxV,
|
||||
|
@ -1183,6 +1186,14 @@ var JpegImage = (function JpegImageClosure() {
|
|||
// dictionary has a 'ColorTransform' entry, explicitly set to `0`,
|
||||
// then the colours should *not* be transformed.
|
||||
return false;
|
||||
} else if (
|
||||
this.components[0].index === /* "R" = */ 0x52 &&
|
||||
this.components[1].index === /* "G" = */ 0x47 &&
|
||||
this.components[2].index === /* "B" = */ 0x42
|
||||
) {
|
||||
// If the three components are indexed as RGB in ASCII
|
||||
// then the colours should *not* be transformed.
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue