bytearray as preferred palette storage

This commit is contained in:
wiredfool 2016-06-09 22:32:16 +01:00
parent 3c2e374824
commit c6489e6fb7

View File

@ -38,7 +38,7 @@ class ImagePalette(object):
def __init__(self, mode="RGB", palette=None, size=0): def __init__(self, mode="RGB", palette=None, size=0):
self.mode = mode self.mode = mode
self.rawmode = None # if set, palette contains raw data self.rawmode = None # if set, palette contains raw data
self.palette = palette or list(range(256))*len(self.mode) self.palette = palette or bytearray(range(256))*len(self.mode)
self.colors = {} self.colors = {}
self.dirty = None self.dirty = None
if ((size == 0 and len(self.mode)*256 != len(self.palette)) or if ((size == 0 and len(self.mode)*256 != len(self.palette)) or
@ -98,8 +98,7 @@ class ImagePalette(object):
except KeyError: except KeyError:
# allocate new color slot # allocate new color slot
if isinstance(self.palette, bytes): if isinstance(self.palette, bytes):
self.palette = [(ord(x) if str is bytes else int(x)) self.palette = bytearray(self.palette)
for x in self.palette]
index = len(self.colors) index = len(self.colors)
if index >= 256: if index >= 256:
raise ValueError("cannot allocate more than 256 colors") raise ValueError("cannot allocate more than 256 colors")