mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-31 16:07:30 +03:00 
			
		
		
		
	
						commit
						2c09252640
					
				|  | @ -827,7 +827,8 @@ def jpeg_factory(fp=None, filename=None): | |||
|         if mpheader[45057] > 1: | ||||
|             # It's actually an MPO | ||||
|             from .MpoImagePlugin import MpoImageFile | ||||
|             im = MpoImageFile(fp, filename) | ||||
|             # Don't reload everything, just convert it. | ||||
|             im = MpoImageFile.adopt(im, mpheader) | ||||
|     except (TypeError, IndexError): | ||||
|         # It is really a JPEG | ||||
|         pass | ||||
|  |  | |||
|  | @ -47,7 +47,10 @@ class MpoImageFile(JpegImagePlugin.JpegImageFile): | |||
|     def _open(self): | ||||
|         self.fp.seek(0)  # prep the fp in order to pass the JPEG test | ||||
|         JpegImagePlugin.JpegImageFile._open(self) | ||||
|         self.mpinfo = self._getmp() | ||||
|         self._after_jpeg_open() | ||||
| 
 | ||||
|     def _after_jpeg_open(self, mpheader=None): | ||||
|         self.mpinfo = mpheader if mpheader is not None else self._getmp() | ||||
|         self.__framecount = self.mpinfo[0xB001] | ||||
|         self.__mpoffsets = [mpent['DataOffset'] + self.info['mpoffset'] | ||||
|                             for mpent in self.mpinfo[0xB002]] | ||||
|  | @ -110,6 +113,22 @@ class MpoImageFile(JpegImagePlugin.JpegImageFile): | |||
|         finally: | ||||
|             self.__fp = None | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def adopt(jpeg_instance, mpheader=None): | ||||
|         """ | ||||
|         Transform the instance of JpegImageFile into | ||||
|         an instance of MpoImageFile. | ||||
|         After the call, the JpegImageFile is extended | ||||
|         to be an MpoImageFile. | ||||
| 
 | ||||
|         This is essentially useful when opening a JPEG | ||||
|         file that reveals itself as an MPO, to avoid | ||||
|         double call to _open. | ||||
|         """ | ||||
|         jpeg_instance.__class__ = MpoImageFile | ||||
|         jpeg_instance._after_jpeg_open(mpheader) | ||||
|         return jpeg_instance | ||||
| 
 | ||||
| 
 | ||||
| # --------------------------------------------------------------------- | ||||
| # Registry stuff | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user