Corrected palette size when saving

This commit is contained in:
Andrew Murray 2022-08-13 19:46:07 +10:00
parent 92b0f2c919
commit 99e401123b
2 changed files with 15 additions and 2 deletions

View File

@ -123,6 +123,18 @@ def test_save(tmp_path):
assert test_im.size == (100, 100)
def test_small_palette(tmp_path):
im = Image.new("P", (1, 1))
colors = [0, 0, 0]
im.putpalette(colors)
out = str(tmp_path / "temp.tga")
im.save(out)
with Image.open(out) as reloaded:
assert reloaded.getpalette() == colors
def test_save_wrong_mode(tmp_path):
im = hopper("PA")
out = str(tmp_path / "temp.tga")

View File

@ -193,7 +193,8 @@ def _save(im, fp, filename):
warnings.warn("id_section has been trimmed to 255 characters")
if colormaptype:
colormapfirst, colormaplength, colormapentry = 0, 256, 24
palette = im.im.getpalette("RGB", "BGR")
colormapfirst, colormaplength, colormapentry = 0, len(palette) // 3, 24
else:
colormapfirst, colormaplength, colormapentry = 0, 0, 0
@ -225,7 +226,7 @@ def _save(im, fp, filename):
fp.write(id_section)
if colormaptype:
fp.write(im.im.getpalette("RGB", "BGR"))
fp.write(palette)
if rle:
ImageFile._save(