mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-13 05:06:49 +03:00
Merge pull request #7900 from scaramallion/dev-j2k-precision
Use I;16 mode for 9-bit JPEG 2000 images
This commit is contained in:
commit
e0b1b38567
BIN
Tests/images/9bit.j2k
Normal file
BIN
Tests/images/9bit.j2k
Normal file
Binary file not shown.
|
@ -446,3 +446,9 @@ def test_plt_marker() -> None:
|
||||||
hdr = out.read(2)
|
hdr = out.read(2)
|
||||||
length = _binary.i16be(hdr)
|
length = _binary.i16be(hdr)
|
||||||
out.seek(length - 2, os.SEEK_CUR)
|
out.seek(length - 2, os.SEEK_CUR)
|
||||||
|
|
||||||
|
|
||||||
|
def test_9bit():
|
||||||
|
with Image.open("Tests/images/9bit.j2k") as im:
|
||||||
|
assert im.mode == "I;16"
|
||||||
|
assert im.size == (128, 128)
|
||||||
|
|
|
@ -106,15 +106,11 @@ def _parse_codestream(fp):
|
||||||
lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from(
|
lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from(
|
||||||
">HHIIIIIIIIH", siz
|
">HHIIIIIIIIH", siz
|
||||||
)
|
)
|
||||||
ssiz = [None] * csiz
|
|
||||||
xrsiz = [None] * csiz
|
|
||||||
yrsiz = [None] * csiz
|
|
||||||
for i in range(csiz):
|
|
||||||
ssiz[i], xrsiz[i], yrsiz[i] = struct.unpack_from(">BBB", siz, 36 + 3 * i)
|
|
||||||
|
|
||||||
size = (xsiz - xosiz, ysiz - yosiz)
|
size = (xsiz - xosiz, ysiz - yosiz)
|
||||||
if csiz == 1:
|
if csiz == 1:
|
||||||
if (yrsiz[0] & 0x7F) > 8:
|
ssiz = struct.unpack_from(">B", siz, 38)
|
||||||
|
if (ssiz[0] & 0x7F) + 1 > 8:
|
||||||
mode = "I;16"
|
mode = "I;16"
|
||||||
else:
|
else:
|
||||||
mode = "L"
|
mode = "L"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user