mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	Pad IM palette to 768 bytes when saving
This commit is contained in:
		
							parent
							
								
									1d1a22bde3
								
							
						
					
					
						commit
						50ba43ac4f
					
				| 
						 | 
					@ -86,6 +86,18 @@ def test_roundtrip(mode, tmp_path):
 | 
				
			||||||
    assert_image_equal_tofile(im, out)
 | 
					    assert_image_equal_tofile(im, out)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_small_palette(tmp_path):
 | 
				
			||||||
 | 
					    im = Image.new("P", (1, 1))
 | 
				
			||||||
 | 
					    colors = [0, 1, 2]
 | 
				
			||||||
 | 
					    im.putpalette(colors)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    out = str(tmp_path / "temp.im")
 | 
				
			||||||
 | 
					    im.save(out)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with Image.open(out) as reloaded:
 | 
				
			||||||
 | 
					        assert reloaded.getpalette() == colors + [0] * 765
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_save_unsupported_mode(tmp_path):
 | 
					def test_save_unsupported_mode(tmp_path):
 | 
				
			||||||
    out = str(tmp_path / "temp.im")
 | 
					    out = str(tmp_path / "temp.im")
 | 
				
			||||||
    im = hopper("HSV")
 | 
					    im = hopper("HSV")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -352,7 +352,13 @@ def _save(im, fp, filename):
 | 
				
			||||||
        fp.write(b"Lut: 1\r\n")
 | 
					        fp.write(b"Lut: 1\r\n")
 | 
				
			||||||
    fp.write(b"\000" * (511 - fp.tell()) + b"\032")
 | 
					    fp.write(b"\000" * (511 - fp.tell()) + b"\032")
 | 
				
			||||||
    if im.mode in ["P", "PA"]:
 | 
					    if im.mode in ["P", "PA"]:
 | 
				
			||||||
        fp.write(im.im.getpalette("RGB", "RGB;L"))  # 768 bytes
 | 
					        im_palette = im.im.getpalette("RGB", "RGB;L")
 | 
				
			||||||
 | 
					        colors = len(im_palette) // 3
 | 
				
			||||||
 | 
					        palette = b""
 | 
				
			||||||
 | 
					        for i in range(3):
 | 
				
			||||||
 | 
					            palette += im_palette[colors * i : colors * (i + 1)]
 | 
				
			||||||
 | 
					            palette += b"\x00" * (256 - colors)
 | 
				
			||||||
 | 
					        fp.write(palette)  # 768 bytes
 | 
				
			||||||
    ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, -1))])
 | 
					    ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, -1))])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user