| 290 | return self.info[FRAMES] > 1 |
| 291 | |
| 292 | def seek(self, frame: int) -> None: |
| 293 | if not self._seek_check(frame): |
| 294 | return |
| 295 | if isinstance(self._fp, DeferredError): |
| 296 | raise self._fp.ex |
| 297 | |
| 298 | self.frame = frame |
| 299 | |
| 300 | if self.mode == "1": |
| 301 | bits = 1 |
| 302 | else: |
| 303 | bits = 8 * len(self.mode) |
| 304 | |
| 305 | size = ((self.size[0] * bits + 7) // 8) * self.size[1] |
| 306 | offs = self.__offset + frame * size |
| 307 | |
| 308 | self.fp = self._fp |
| 309 | |
| 310 | self.tile = [ |
| 311 | ImageFile._Tile("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1)) |
| 312 | ] |
| 313 | |
| 314 | def tell(self) -> int: |
| 315 | return self.frame |