@@ -54,7 +54,8 @@ def _open(self):
5454 self ._size = width , height
5555 self .fp = BytesIO (data )
5656 self .tile = [("raw" , (0 , 0 ) + self .size , 0 , self .mode )]
57- self ._n_frames = 1
57+ self .n_frames = 1
58+ self .is_animated = False
5859 return
5960
6061 # Use the newer AnimDecoder API to parse the (possibly) animated file,
@@ -72,7 +73,8 @@ def _open(self):
7273 bgcolor & 0xFF ,
7374 )
7475 self .info ["background" ] = (bg_r , bg_g , bg_b , bg_a )
75- self ._n_frames = frame_count
76+ self .n_frames = frame_count
77+ self .is_animated = self .n_frames > 1
7678 self .mode = "RGB" if mode == "RGBX" else mode
7779 self .rawmode = mode
7880 self .tile = []
@@ -90,30 +92,15 @@ def _open(self):
9092
9193 # Initialize seek state
9294 self ._reset (reset = False )
93- self .seek (0 )
9495
9596 def _getexif (self ):
9697 if "exif" not in self .info :
9798 return None
9899 return dict (self .getexif ())
99100
100- @property
101- def n_frames (self ):
102- return self ._n_frames
103-
104- @property
105- def is_animated (self ):
106- return self ._n_frames > 1
107-
108101 def seek (self , frame ):
109- if not _webp .HAVE_WEBPANIM :
110- return super ().seek (frame )
111-
112- # Perform some simple checks first
113- if frame >= self ._n_frames :
114- raise EOFError ("attempted to seek beyond end of sequence" )
115- if frame < 0 :
116- raise EOFError ("negative frame index is not valid" )
102+ if not self ._seek_check (frame ):
103+ return
117104
118105 # Set logical frame to requested position
119106 self .__logical_frame = frame
0 commit comments