Skip to content

Commit e1bf0f6

Browse files
authored
Merge pull request #8805 from radarhere/gimp
Start from zero index when reading GimpPaletteFile
2 parents 74fec91 + 669a288 commit e1bf0f6

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

Tests/test_file_gimppalette.py

+1
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@ def test_get_palette() -> None:
3232

3333
# Assert
3434
assert mode == "RGB"
35+
assert len(palette) / 3 == 8

src/PIL/GimpPaletteFile.py

+6-9
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,19 @@
1818
import re
1919
from typing import IO
2020

21-
from ._binary import o8
22-
2321

2422
class GimpPaletteFile:
2523
"""File handler for GIMP's palette format."""
2624

2725
rawmode = "RGB"
2826

2927
def __init__(self, fp: IO[bytes]) -> None:
30-
palette = [o8(i) * 3 for i in range(256)]
31-
3228
if not fp.readline().startswith(b"GIMP Palette"):
3329
msg = "not a GIMP palette file"
3430
raise SyntaxError(msg)
3531

36-
for i in range(256):
32+
palette: list[int] = []
33+
for _ in range(256):
3734
s = fp.readline()
3835
if not s:
3936
break
@@ -45,14 +42,14 @@ def __init__(self, fp: IO[bytes]) -> None:
4542
msg = "bad palette file"
4643
raise SyntaxError(msg)
4744

48-
v = tuple(map(int, s.split()[:3]))
49-
if len(v) != 3:
45+
v = s.split(maxsplit=3)
46+
if len(v) < 3:
5047
msg = "bad palette entry"
5148
raise ValueError(msg)
5249

53-
palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2])
50+
palette += (int(v[i]) for i in range(3))
5451

55-
self.palette = b"".join(palette)
52+
self.palette = bytes(palette)
5653

5754
def getpalette(self) -> tuple[bytes, str]:
5855
return self.palette, self.rawmode

0 commit comments

Comments
 (0)