Server IP : 85.214.239.14 / Your IP : 3.133.149.244 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/task/3/cwd/srv/modoboa/env/lib64/python3.5/site-packages/PIL/ |
Upload File : |
# # The Python Imaging Library. # $Id$ # # sequence support classes # # history: # 1997-02-20 fl Created # # Copyright (c) 1997 by Secret Labs AB. # Copyright (c) 1997 by Fredrik Lundh. # # See the README file for information on usage and redistribution. # ## class Iterator: """ This class implements an iterator object that can be used to loop over an image sequence. You can use the ``[]`` operator to access elements by index. This operator will raise an :py:exc:`IndexError` if you try to access a nonexistent frame. :param im: An image object. """ def __init__(self, im): if not hasattr(im, "seek"): raise AttributeError("im must have seek method") self.im = im self.position = getattr(self.im, "_min_frame", 0) def __getitem__(self, ix): try: self.im.seek(ix) return self.im except EOFError: raise IndexError # end of sequence def __iter__(self): return self def __next__(self): try: self.im.seek(self.position) self.position += 1 return self.im except EOFError: raise StopIteration def all_frames(im, func=None): """ 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. :param im: An image, or a list of images. :param func: The function to apply to all of the image frames. :returns: A list of images. """ if not isinstance(im, list): im = [im] ims = [] for imSequence in im: current = imSequence.tell() ims += [im_frame.copy() for im_frame in Iterator(imSequence)] imSequence.seek(current) return [func(im) for im in ims] if func else ims