Skip to content

Commit 2572f4d

Browse files
committed
fixed frame number check
1 parent 1bfd2e7 commit 2572f4d

File tree

1 file changed

+46
-43
lines changed

1 file changed

+46
-43
lines changed

tagstudio/src/qt/widgets/preview_panel.py

+46-43
Original file line numberDiff line numberDiff line change
@@ -657,50 +657,53 @@ def update_widgets(self) -> bool:
657657
if MediaCategories.is_ext_in_category(
658658
ext, MediaCategories.IMAGE_ANIMATED_TYPES, mime_fallback=True
659659
):
660-
if self.preview_gif.movie():
661-
self.preview_gif.movie().stop()
662-
self.gif_buffer.close()
663-
664-
ba: bytes
665660
image: Image.Image = Image.open(filepath)
666-
if not ext.lstrip(".") in self.preview_ani_img_fmts:
667-
668-
anim_image: Image.Image = image
669-
image_bytes_io: io.BytesIO = io.BytesIO()
670-
save_ext = self.get_anim_ext()
671-
extra_args = self.preview_ani_img_pil_map_args.get(
672-
save_ext, {}
673-
)
674-
anim_image.save(
675-
image_bytes_io,
676-
format=save_ext,
677-
lossless=True,
678-
save_all=True,
679-
loop=0,
680-
disposal=2,
681-
**extra_args,
682-
)
683-
image_bytes_io.seek(0)
684-
ba: bytes = image_bytes_io.read()
685-
686-
else:
687-
with open(filepath, mode="rb") as f:
688-
ba = f.read()
689-
690-
self.gif_buffer.setData(ba)
691-
movie = QMovie(self.gif_buffer, QByteArray())
692-
self.preview_gif.setMovie(movie)
693-
movie.start()
694-
695-
self.resizeEvent(
696-
QResizeEvent(
697-
QSize(image.width, image.height),
698-
QSize(image.width, image.height),
699-
)
700-
)
701-
self.preview_img.hide()
702-
self.preview_vid.hide()
703-
self.preview_gif.show()
661+
if hasattr(image, "n_frames"):
662+
if image.n_frames > 1:
663+
664+
if self.preview_gif.movie():
665+
self.preview_gif.movie().stop()
666+
self.gif_buffer.close()
667+
668+
ba: bytes
669+
if not ext.lstrip(".") in self.preview_ani_img_fmts:
670+
671+
anim_image: Image.Image = image
672+
image_bytes_io: io.BytesIO = io.BytesIO()
673+
save_ext = self.get_anim_ext()
674+
extra_args = self.preview_ani_img_pil_map_args.get(
675+
save_ext, {}
676+
)
677+
anim_image.save(
678+
image_bytes_io,
679+
format=save_ext,
680+
lossless=True,
681+
save_all=True,
682+
loop=0,
683+
disposal=2,
684+
**extra_args,
685+
)
686+
image_bytes_io.seek(0)
687+
ba: bytes = image_bytes_io.read()
688+
689+
else:
690+
with open(filepath, mode="rb") as f:
691+
ba = f.read()
692+
693+
self.gif_buffer.setData(ba)
694+
movie = QMovie(self.gif_buffer, QByteArray())
695+
self.preview_gif.setMovie(movie)
696+
movie.start()
697+
698+
self.resizeEvent(
699+
QResizeEvent(
700+
QSize(image.width, image.height),
701+
QSize(image.width, image.height),
702+
)
703+
)
704+
self.preview_img.hide()
705+
self.preview_vid.hide()
706+
self.preview_gif.show()
704707

705708
image = None
706709
if (

0 commit comments

Comments
 (0)