mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-12 10:16:17 +03:00
Merge pull request #7635 from radarhere/type_hints_imagesequence
This commit is contained in:
commit
fbecf7790b
|
@ -1181,7 +1181,7 @@ class Image:
|
||||||
|
|
||||||
return im
|
return im
|
||||||
|
|
||||||
def copy(self):
|
def copy(self) -> Image:
|
||||||
"""
|
"""
|
||||||
Copies this image. Use this method if you wish to paste things
|
Copies this image. Use this method if you wish to paste things
|
||||||
into an image, but still retain the original.
|
into an image, but still retain the original.
|
||||||
|
@ -2450,7 +2450,7 @@ class Image:
|
||||||
if open_fp:
|
if open_fp:
|
||||||
fp.close()
|
fp.close()
|
||||||
|
|
||||||
def seek(self, frame):
|
def seek(self, frame) -> Image:
|
||||||
"""
|
"""
|
||||||
Seeks to the given frame in this sequence file. If you seek
|
Seeks to the given frame in this sequence file. If you seek
|
||||||
beyond the end of the sequence, the method raises an
|
beyond the end of the sequence, the method raises an
|
||||||
|
@ -2537,7 +2537,7 @@ class Image:
|
||||||
|
|
||||||
return self._new(self.im.getband(channel))
|
return self._new(self.im.getband(channel))
|
||||||
|
|
||||||
def tell(self):
|
def tell(self) -> int:
|
||||||
"""
|
"""
|
||||||
Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`.
|
Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`.
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,10 @@
|
||||||
##
|
##
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Callable
|
||||||
|
|
||||||
|
from . import Image
|
||||||
|
|
||||||
|
|
||||||
class Iterator:
|
class Iterator:
|
||||||
"""
|
"""
|
||||||
|
@ -29,14 +33,14 @@ class Iterator:
|
||||||
:param im: An image object.
|
:param im: An image object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, im):
|
def __init__(self, im: Image.Image):
|
||||||
if not hasattr(im, "seek"):
|
if not hasattr(im, "seek"):
|
||||||
msg = "im must have seek method"
|
msg = "im must have seek method"
|
||||||
raise AttributeError(msg)
|
raise AttributeError(msg)
|
||||||
self.im = im
|
self.im = im
|
||||||
self.position = getattr(self.im, "_min_frame", 0)
|
self.position = getattr(self.im, "_min_frame", 0)
|
||||||
|
|
||||||
def __getitem__(self, ix):
|
def __getitem__(self, ix: int) -> Image.Image:
|
||||||
try:
|
try:
|
||||||
self.im.seek(ix)
|
self.im.seek(ix)
|
||||||
return self.im
|
return self.im
|
||||||
|
@ -44,10 +48,10 @@ class Iterator:
|
||||||
msg = "end of sequence"
|
msg = "end of sequence"
|
||||||
raise IndexError(msg) from e
|
raise IndexError(msg) from e
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self) -> Iterator:
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __next__(self):
|
def __next__(self) -> Image.Image:
|
||||||
try:
|
try:
|
||||||
self.im.seek(self.position)
|
self.im.seek(self.position)
|
||||||
self.position += 1
|
self.position += 1
|
||||||
|
@ -57,7 +61,10 @@ class Iterator:
|
||||||
raise StopIteration(msg) from e
|
raise StopIteration(msg) from e
|
||||||
|
|
||||||
|
|
||||||
def all_frames(im, func=None):
|
def all_frames(
|
||||||
|
im: Image.Image | list[Image.Image],
|
||||||
|
func: Callable[[Image.Image], Image.Image] | None = None,
|
||||||
|
) -> list[Image.Image]:
|
||||||
"""
|
"""
|
||||||
Applies a given function to all frames in an image or a list of images.
|
Applies a given function to all frames in an image or a list of images.
|
||||||
The frames are returned as a list of separate images.
|
The frames are returned as a list of separate images.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user