Skip to content

Commit

Permalink
Added rawmode argument to getpalette()
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Feb 16, 2022
1 parent bd4e20f commit 8528594
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
27 changes: 27 additions & 0 deletions Tests/test_image_getpalette.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from PIL import Image

from .helper import hopper


Expand All @@ -17,3 +19,28 @@ def palette(mode):
assert palette("RGBA") is None
assert palette("CMYK") is None
assert palette("YCbCr") is None


def test_palette_rawmode():
im = Image.new("P", (1, 1))
im.putpalette((1, 2, 3))

rgb = im.getpalette("RGB")
assert len(rgb) == 256 * 3
assert rgb[:3] == [1, 2, 3]

# Convert the RGB palette to RGBA
rgba = im.getpalette("RGBA")
assert len(rgba) == 256 * 4
assert rgba[:4] == [1, 2, 3, 255]

im.putpalette((1, 2, 3, 4), "RGBA")

# Convert the RGBA palette to RGB
rgb = im.getpalette("RGB")
assert len(rgb) == 256 * 3
assert rgb[:3] == [1, 2, 3]

rgba = im.getpalette("RGBA")
assert len(rgba) == 256 * 4
assert rgba[:4] == [1, 2, 3, 4]
6 changes: 4 additions & 2 deletions src/PIL/Image.py
Original file line number Diff line number Diff line change
Expand Up @@ -1401,19 +1401,21 @@ def getim(self):
self.load()
return self.im.ptr

def getpalette(self):
def getpalette(self, rawmode="RGB"):
"""
Returns the image palette as a list.
:param rawmode: The mode in which to return the palette.
:returns: A list of color values [r, g, b, ...], or None if the
image has no palette.
"""

self.load()
try:
return list(self.im.getpalette())
mode = self.im.getpalettemode()
except ValueError:
return None # no palette
return list(self.im.getpalette(mode, rawmode))

def getpixel(self, xy):
"""
Expand Down
1 change: 1 addition & 0 deletions src/libImaging/Pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,7 @@ static struct {
/* true colour */
{"RGB", "RGB", 24, ImagingPackRGB},
{"RGB", "RGBX", 32, copy4},
{"RGB", "RGBA", 32, copy4},
{"RGB", "XRGB", 32, ImagingPackXRGB},
{"RGB", "BGR", 24, ImagingPackBGR},
{"RGB", "BGRX", 32, ImagingPackBGRX},
Expand Down

0 comments on commit 8528594

Please sign in to comment.