mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import pytest
 | 
						|
 | 
						|
from PIL import Image, ImagePalette
 | 
						|
 | 
						|
from .helper import assert_image_equal, assert_image_equal_tofile, hopper
 | 
						|
 | 
						|
 | 
						|
def test_putpalette():
 | 
						|
    def palette(mode):
 | 
						|
        im = hopper(mode).copy()
 | 
						|
        im.putpalette(list(range(256)) * 3)
 | 
						|
        p = im.getpalette()
 | 
						|
        if p:
 | 
						|
            return im.mode, p[:10]
 | 
						|
        return im.mode
 | 
						|
 | 
						|
    with pytest.raises(ValueError):
 | 
						|
        palette("1")
 | 
						|
    for mode in ["L", "LA", "P", "PA"]:
 | 
						|
        assert palette(mode) == (
 | 
						|
            "PA" if "A" in mode else "P",
 | 
						|
            [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
 | 
						|
        )
 | 
						|
    with pytest.raises(ValueError):
 | 
						|
        palette("I")
 | 
						|
    with pytest.raises(ValueError):
 | 
						|
        palette("F")
 | 
						|
    with pytest.raises(ValueError):
 | 
						|
        palette("RGB")
 | 
						|
    with pytest.raises(ValueError):
 | 
						|
        palette("RGBA")
 | 
						|
    with pytest.raises(ValueError):
 | 
						|
        palette("YCbCr")
 | 
						|
 | 
						|
 | 
						|
def test_imagepalette():
 | 
						|
    im = hopper("P")
 | 
						|
    im.putpalette(ImagePalette.negative())
 | 
						|
    assert_image_equal_tofile(im.convert("RGB"), "Tests/images/palette_negative.png")
 | 
						|
 | 
						|
    im.putpalette(ImagePalette.random())
 | 
						|
 | 
						|
    im.putpalette(ImagePalette.sepia())
 | 
						|
    assert_image_equal_tofile(im.convert("RGB"), "Tests/images/palette_sepia.png")
 | 
						|
 | 
						|
    im.putpalette(ImagePalette.wedge())
 | 
						|
    assert_image_equal_tofile(im.convert("RGB"), "Tests/images/palette_wedge.png")
 | 
						|
 | 
						|
 | 
						|
def test_putpalette_with_alpha_values():
 | 
						|
    with Image.open("Tests/images/transparent.gif") as im:
 | 
						|
        expected = im.convert("RGBA")
 | 
						|
 | 
						|
        palette = im.getpalette()
 | 
						|
        transparency = im.info.pop("transparency")
 | 
						|
 | 
						|
        palette_with_alpha_values = []
 | 
						|
        for i in range(256):
 | 
						|
            color = palette[i * 3 : i * 3 + 3]
 | 
						|
            alpha = 0 if i == transparency else 255
 | 
						|
            palette_with_alpha_values += color + [alpha]
 | 
						|
        im.putpalette(palette_with_alpha_values, "RGBA")
 | 
						|
 | 
						|
        assert_image_equal(im.convert("RGBA"), expected)
 |