kopia lustrzana https://gitlab.com/sane-project/backends
Swap bytes in 16-bit PNGs, because PNG is big-endian.
rodzic
5fa4be5ae4
commit
28eb09eec4
|
@ -1529,6 +1529,19 @@ scan_it (FILE *ofp)
|
|||
for(j = 0; j < parm.bytes_per_line; j++)
|
||||
pngbuf[j] = ~pngbuf[j];
|
||||
}
|
||||
/* PNG is big-endian, */
|
||||
/* see: https://www.w3.org/TR/2003/REC-PNG-20031110/#7Integers-and-byte-order */
|
||||
if (parm.depth == 16)
|
||||
{
|
||||
int j;
|
||||
for (j = 0; j < parm.bytes_per_line; j += 2)
|
||||
{
|
||||
SANE_Byte LSB;
|
||||
LSB = pngbuf[j];
|
||||
pngbuf[j] = pngbuf[j + 1];
|
||||
pngbuf[j + 1] = LSB;
|
||||
}
|
||||
}
|
||||
png_write_row(png_ptr, pngbuf);
|
||||
i += parm.bytes_per_line - pngrow;
|
||||
left -= parm.bytes_per_line - pngrow;
|
||||
|
|
Ładowanie…
Reference in New Issue