mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-05-30 02:33:07 +03:00
expand tile element names, don't attempt to mmap if args has < 3 elements
This commit is contained in:
parent
318ff7d332
commit
372b1abe69
|
@ -150,15 +150,16 @@ class ImageFile(Image.Image):
|
||||||
|
|
||||||
if use_mmap:
|
if use_mmap:
|
||||||
# try memory mapping
|
# try memory mapping
|
||||||
d, e, o, a = self.tile[0]
|
decoder_name, extents, offset, args = self.tile[0]
|
||||||
if d == "raw" and a[0] == self.mode and a[0] in Image._MAPMODES:
|
if decoder_name == "raw" and len(args) >= 3 and args[0] == self.mode \
|
||||||
|
and args[0] in Image._MAPMODES:
|
||||||
try:
|
try:
|
||||||
if hasattr(Image.core, "map"):
|
if hasattr(Image.core, "map"):
|
||||||
# use built-in mapper WIN32 only
|
# use built-in mapper WIN32 only
|
||||||
self.map = Image.core.map(self.filename)
|
self.map = Image.core.map(self.filename)
|
||||||
self.map.seek(o)
|
self.map.seek(offset)
|
||||||
self.im = self.map.readimage(
|
self.im = self.map.readimage(
|
||||||
self.mode, self.size, a[1], a[2]
|
self.mode, self.size, args[1], args[2]
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# use mmap, if possible
|
# use mmap, if possible
|
||||||
|
@ -167,7 +168,7 @@ class ImageFile(Image.Image):
|
||||||
size = os.path.getsize(self.filename)
|
size = os.path.getsize(self.filename)
|
||||||
self.map = mmap.mmap(fp.fileno(), size, access=mmap.ACCESS_READ)
|
self.map = mmap.mmap(fp.fileno(), size, access=mmap.ACCESS_READ)
|
||||||
self.im = Image.core.map_buffer(
|
self.im = Image.core.map_buffer(
|
||||||
self.map, self.size, d, e, o, a
|
self.map, self.size, decoder_name, extents, offset, args
|
||||||
)
|
)
|
||||||
readonly = 1
|
readonly = 1
|
||||||
# After trashing self.im, we might need to reload the palette data.
|
# After trashing self.im, we might need to reload the palette data.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user