mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-06-06 06:03:14 +03:00
Fix #6652: Handle translucent color used in RGB ImagePallete
This commit is contained in:
parent
243402e78e
commit
f9a3178bb3
|
@ -50,6 +50,15 @@ def test_getcolor():
|
||||||
palette.getcolor("unknown")
|
palette.getcolor("unknown")
|
||||||
|
|
||||||
|
|
||||||
|
def test_getcolor_raises_on_incompatible_color():
|
||||||
|
palette = ImagePalette.ImagePalette(mode="RGB")
|
||||||
|
# Opaque RGBA colors should work
|
||||||
|
palette.getcolor((0, 0, 0, 255))
|
||||||
|
assert palette.getcolor((0, 0, 0)) == palette.getcolor((0, 0, 0, 255))
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
palette.getcolor((0, 0, 0, 128))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"index, palette",
|
"index, palette",
|
||||||
[
|
[
|
||||||
|
|
|
@ -114,9 +114,13 @@ class ImagePalette:
|
||||||
if self.rawmode:
|
if self.rawmode:
|
||||||
raise ValueError("palette contains raw palette data")
|
raise ValueError("palette contains raw palette data")
|
||||||
if isinstance(color, tuple):
|
if isinstance(color, tuple):
|
||||||
if self.mode == "RGB":
|
if self.mode == "RGB" and len(color) == 4:
|
||||||
if len(color) == 4 and color[3] == 255:
|
if color[3] == 255:
|
||||||
color = color[:3]
|
color = color[:3]
|
||||||
|
else:
|
||||||
|
raise ValueError(
|
||||||
|
"RGB ImagePalette can't handle non-opaque RGBA colors"
|
||||||
|
)
|
||||||
elif self.mode == "RGBA":
|
elif self.mode == "RGBA":
|
||||||
if len(color) == 3:
|
if len(color) == 3:
|
||||||
color += (255,)
|
color += (255,)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user