mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-04 20:03:20 +03:00
close files after loading for some file types
This commit is contained in:
parent
091d0c400c
commit
58484db509
|
@ -58,6 +58,7 @@ class DcxImageFile(PcxImageFile):
|
||||||
self._offset.append(offset)
|
self._offset.append(offset)
|
||||||
|
|
||||||
self.__fp = self.fp
|
self.__fp = self.fp
|
||||||
|
self._exclusive_fp = False
|
||||||
self.seek(0)
|
self.seek(0)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -84,6 +84,7 @@ class FliImageFile(ImageFile.ImageFile):
|
||||||
# set things up to decode first frame
|
# set things up to decode first frame
|
||||||
self.__frame = -1
|
self.__frame = -1
|
||||||
self.__fp = self.fp
|
self.__fp = self.fp
|
||||||
|
self._exclusive_fp = False
|
||||||
self.__rewind = self.fp.tell()
|
self.__rewind = self.fp.tell()
|
||||||
self._n_frames = None
|
self._n_frames = None
|
||||||
self._is_animated = None
|
self._is_animated = None
|
||||||
|
|
|
@ -80,6 +80,7 @@ class GifImageFile(ImageFile.ImageFile):
|
||||||
break
|
break
|
||||||
|
|
||||||
self.__fp = self.fp # FIXME: hack
|
self.__fp = self.fp # FIXME: hack
|
||||||
|
self._exclusive_fp = False
|
||||||
self.__rewind = self.fp.tell()
|
self.__rewind = self.fp.tell()
|
||||||
self._n_frames = None
|
self._n_frames = None
|
||||||
self._is_animated = None
|
self._is_animated = None
|
||||||
|
|
|
@ -234,6 +234,7 @@ class ImImageFile(ImageFile.ImageFile):
|
||||||
self.__offset = offs = self.fp.tell()
|
self.__offset = offs = self.fp.tell()
|
||||||
|
|
||||||
self.__fp = self.fp # FIXME: hack
|
self.__fp = self.fp # FIXME: hack
|
||||||
|
self._exclusive_fp = False
|
||||||
|
|
||||||
if self.rawmode[:2] == "F;":
|
if self.rawmode[:2] == "F;":
|
||||||
|
|
||||||
|
|
|
@ -2440,6 +2440,8 @@ def open(fp, mode="r"):
|
||||||
im = _open_core(fp, filename, prefix)
|
im = _open_core(fp, filename, prefix)
|
||||||
|
|
||||||
if im:
|
if im:
|
||||||
|
if getattr(im, '_exclusive_fp', 'undef') is None:
|
||||||
|
im._exclusive_fp = exclusive_fp
|
||||||
return im
|
return im
|
||||||
|
|
||||||
if exclusive_fp:
|
if exclusive_fp:
|
||||||
|
|
|
@ -93,7 +93,8 @@ class ImageFile(Image.Image):
|
||||||
# stream
|
# stream
|
||||||
self.fp = fp
|
self.fp = fp
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
self._exclusive_fp = False
|
# can be overridden
|
||||||
|
self._exclusive_fp = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._open()
|
self._open()
|
||||||
|
|
|
@ -64,6 +64,7 @@ class MicImageFile(TiffImagePlugin.TiffImageFile):
|
||||||
raise SyntaxError("not an MIC file; no image entries")
|
raise SyntaxError("not an MIC file; no image entries")
|
||||||
|
|
||||||
self.__fp = self.fp
|
self.__fp = self.fp
|
||||||
|
self._exclusive_fp = False
|
||||||
self.frame = 0
|
self.frame = 0
|
||||||
|
|
||||||
if len(self.images) > 1:
|
if len(self.images) > 1:
|
||||||
|
|
|
@ -53,6 +53,7 @@ class MpoImageFile(JpegImagePlugin.JpegImageFile):
|
||||||
assert self.__framecount == len(self.__mpoffsets)
|
assert self.__framecount == len(self.__mpoffsets)
|
||||||
del self.info['mpoffset'] # no longer needed
|
del self.info['mpoffset'] # no longer needed
|
||||||
self.__fp = self.fp # FIXME: hack
|
self.__fp = self.fp # FIXME: hack
|
||||||
|
self._exclusive_fp = False
|
||||||
self.__fp.seek(self.__mpoffsets[0]) # get ready to read first frame
|
self.__fp.seek(self.__mpoffsets[0]) # get ready to read first frame
|
||||||
self.__frame = 0
|
self.__frame = 0
|
||||||
self.offset = 0
|
self.offset = 0
|
||||||
|
|
|
@ -154,6 +154,7 @@ class SpiderImageFile(ImageFile.ImageFile):
|
||||||
("raw", (0, 0) + self.size, offset,
|
("raw", (0, 0) + self.size, offset,
|
||||||
(self.rawmode, 0, 1))]
|
(self.rawmode, 0, 1))]
|
||||||
self.__fp = self.fp # FIXME: hack
|
self.__fp = self.fp # FIXME: hack
|
||||||
|
self._exclusive_fp = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def n_frames(self):
|
def n_frames(self):
|
||||||
|
|
|
@ -901,6 +901,7 @@ class TiffImageFile(ImageFile.ImageFile):
|
||||||
self.__first = self.__next = self.tag_v2.next
|
self.__first = self.__next = self.tag_v2.next
|
||||||
self.__frame = -1
|
self.__frame = -1
|
||||||
self.__fp = self.fp
|
self.__fp = self.fp
|
||||||
|
self._exclusive_fp = False
|
||||||
self._frame_pos = []
|
self._frame_pos = []
|
||||||
self._n_frames = None
|
self._n_frames = None
|
||||||
self._is_animated = None
|
self._is_animated = None
|
||||||
|
|
|
@ -116,8 +116,6 @@ class XpmImageFile(ImageFile.ImageFile):
|
||||||
for i in range(ysize):
|
for i in range(ysize):
|
||||||
s[i] = self.fp.readline()[1:xsize+1].ljust(xsize)
|
s[i] = self.fp.readline()[1:xsize+1].ljust(xsize)
|
||||||
|
|
||||||
self.fp = None
|
|
||||||
|
|
||||||
return b"".join(s)
|
return b"".join(s)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue
Block a user