@@ -164,21 +164,29 @@ def get_frames(self, frame_range=None, *args, **kwargs):
164164
165165 if type (frame_range ) in [list , tuple ] and len (frame_range ) != 2 :
166166 raise ValueError ('Length of the frame range must be 2!' )
167+
168+ if frame_range is None :
169+ frames_start = 0
170+ frames_end = self .N + 1
171+ n_frames = self .N
172+ elif type (frame_range ) is int :
173+ frames_start = 0
174+ frames_end = frame_range
175+ n_frames = frame_range
176+ elif type (frame_range ) in [list , tuple ]:
177+ frames_start = frame_range [0 ]
178+ frames_end = frame_range [1 ]
179+ n_frames = frame_range [1 ] - frame_range [0 ]
167180
168181 if self .file_format in PHORTRON_HEADER_FILE or self .file_format == 'np.ndarray' :
169- frames = self ._frames
182+ frames = self ._frames [ frames_start : frames_end ]
170183
171184 else :
172- frames = np .zeros ((self . N , self .image_height , self .image_width ))
173- for i in self . N :
174- frames [i ] = self .get_frame (i , * args , ** kwargs )
185+ frames = np .zeros ((n_frames , self .image_height , self .image_width ), dtype = int )
186+ for i in range ( n_frames ) :
187+ frames [i ] = self .get_frame (i + frames_start , * args , ** kwargs )
175188
176- if frame_range is None :
177- return frames
178- elif type (frame_range ) is int :
179- return frames [:frame_range ]
180- elif type (frame_range ) in [list , tuple ]:
181- return frames [frame_range [0 ]:frame_range [1 ]]
189+ return frames
182190
183191 def _get_frame_from_image (self , frame_number , use_channel = 'Y' ):
184192 """Reads the frame from the image stream, or image file containing multiple images.
0 commit comments