Swap bytes in 16-bit PNGs, because PNG is big-endian.

merge-requests/1/head
Aaron Muir Hamilton 2017-04-16 00:27:54 +00:00 zatwierdzone przez Olaf Meeuwissen
rodzic 5fa4be5ae4
commit 28eb09eec4
1 zmienionych plików z 13 dodań i 0 usunięć

Wyświetl plik

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