mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-13 02:36:17 +03:00
Allow putpalette for LA and PA
This commit is contained in:
parent
819b8acd26
commit
dba38912fb
|
@ -14,8 +14,10 @@ class TestImagePutPalette(PillowTestCase):
|
|||
return im.mode, p[:10]
|
||||
return im.mode
|
||||
self.assertRaises(ValueError, palette, "1")
|
||||
self.assertEqual(palette("L"), ("P", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
|
||||
self.assertEqual(palette("P"), ("P", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
|
||||
for mode in ["L", "LA", "P", "PA"]:
|
||||
self.assertEqual(palette(mode),
|
||||
("PA" if "A" in mode else "P",
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
|
||||
self.assertRaises(ValueError, palette, "I")
|
||||
self.assertRaises(ValueError, palette, "F")
|
||||
self.assertRaises(ValueError, palette, "RGB")
|
||||
|
|
|
@ -1619,10 +1619,10 @@ class Image(object):
|
|||
|
||||
def putpalette(self, data, rawmode="RGB"):
|
||||
"""
|
||||
Attaches a palette to this image. The image must be a "P" or
|
||||
"L" image, and the palette sequence must contain 768 integer
|
||||
values, where each group of three values represent the red,
|
||||
green, and blue values for the corresponding pixel
|
||||
Attaches a palette to this image. The image must be a "P",
|
||||
"PA", "L" or "LA" image, and the palette sequence must contain
|
||||
768 integer values, where each group of three values represent
|
||||
the red, green, and blue values for the corresponding pixel
|
||||
index. Instead of an integer sequence, you can use an 8-bit
|
||||
string.
|
||||
|
||||
|
@ -1631,7 +1631,7 @@ class Image(object):
|
|||
"""
|
||||
from . import ImagePalette
|
||||
|
||||
if self.mode not in ("L", "P"):
|
||||
if self.mode not in ("L", "LA", "P", "PA"):
|
||||
raise ValueError("illegal image mode")
|
||||
self.load()
|
||||
if isinstance(data, ImagePalette.ImagePalette):
|
||||
|
@ -1643,7 +1643,7 @@ class Image(object):
|
|||
else:
|
||||
data = "".join(chr(x) for x in data)
|
||||
palette = ImagePalette.raw(rawmode, data)
|
||||
self.mode = "P"
|
||||
self.mode = "PA" if "A" in self.mode else "P"
|
||||
self.palette = palette
|
||||
self.palette.mode = "RGB"
|
||||
self.load() # install new palette
|
||||
|
|
|
@ -1569,7 +1569,8 @@ _putpalette(ImagingObject* self, PyObject* args)
|
|||
if (!PyArg_ParseTuple(args, "s"PY_ARG_BYTES_LENGTH, &rawmode, &palette, &palettesize))
|
||||
return NULL;
|
||||
|
||||
if (strcmp(self->image->mode, "L") != 0 && strcmp(self->image->mode, "P")) {
|
||||
if (strcmp(self->image->mode, "L") && strcmp(self->image->mode, "LA") &&
|
||||
strcmp(self->image->mode, "P") && strcmp(self->image->mode, "PA")) {
|
||||
PyErr_SetString(PyExc_ValueError, wrong_mode);
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user