mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +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