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): https://stackoverflow.com/questions/50798014/determining-color-space-for-jpeg/50861048

Issue #11931
This commit is contained in:
Carlos Rodríguez 2020-06-04 08:43:46 +02:00
parent 96ad60f116
commit 802aa14a99
4 changed files with 19 additions and 1 deletions

View File

@ -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;
}

View File

@ -147,6 +147,7 @@
!issue1055r.pdf
!issue11713.pdf
!issue1293r.pdf
!issue11931.pdf
!issue1655r.pdf
!issue6541.pdf
!issue2948.pdf

BIN
test/pdfs/issue11931.pdf Normal file

Binary file not shown.

View File

@ -4367,6 +4367,12 @@
"type": "eq",
"forms": true
},
{ "id": "issue11931",
"file": "pdfs/issue11931.pdf",
"md5": "9ea233037992e1f10280420a49e72845",
"rounds": 1,
"type": "eq"
},
{ "id": "annotation-button-widget-annotations",
"file": "pdfs/annotation-button-widget.pdf",
"md5": "5cf23adfff84256d9cfe261bea96dade",