File tree Expand file tree Collapse file tree 2 files changed +22
-8
lines changed
Expand file tree Collapse file tree 2 files changed +22
-8
lines changed Original file line number Diff line number Diff line change @@ -91,6 +91,18 @@ def test_exif(test_file: str) -> None:
9191 assert info [34665 ] == 188
9292
9393
94+ def test_app1_not_exif () -> None :
95+ with open ("Tests/images/sugarshack.mpo" , "rb" ) as fp :
96+ data = fp .read ()
97+ data = data [:60014 ] + b" " + data [60015 :]
98+ b = BytesIO (data )
99+ with Image .open (b ) as im :
100+ del im .info ["exif" ]
101+
102+ im .seek (1 )
103+ assert "exif" not in im .info
104+
105+
94106def test_frame_size () -> None :
95107 # This image has been hexedited to contain a different size
96108 # in the EXIF data of the second frame
Original file line number Diff line number Diff line change @@ -145,14 +145,16 @@ def seek(self, frame):
145145 self ._size = self ._initial_size
146146 if i16 (segment ) == 0xFFE1 : # APP1
147147 n = i16 (self .fp .read (2 )) - 2
148- self .info ["exif" ] = ImageFile ._safe_read (self .fp , n )
149- self ._reload_exif ()
150-
151- mptype = self .mpinfo [0xB002 ][frame ]["Attribute" ]["MPType" ]
152- if mptype .startswith ("Large Thumbnail" ):
153- exif = self .getexif ().get_ifd (ExifTags .IFD .Exif )
154- if 40962 in exif and 40963 in exif :
155- self ._size = (exif [40962 ], exif [40963 ])
148+ s = ImageFile ._safe_read (self .fp , n )
149+ if s [:6 ] == b"Exif\0 \0 " :
150+ self .info ["exif" ] = s
151+ self ._reload_exif ()
152+
153+ mptype = self .mpinfo [0xB002 ][frame ]["Attribute" ]["MPType" ]
154+ if mptype .startswith ("Large Thumbnail" ):
155+ exif = self .getexif ().get_ifd (ExifTags .IFD .Exif )
156+ if 40962 in exif and 40963 in exif :
157+ self ._size = (exif [40962 ], exif [40963 ])
156158 elif "exif" in self .info :
157159 del self .info ["exif" ]
158160 self ._reload_exif ()
You can’t perform that action at this time.
0 commit comments