@@ -657,50 +657,53 @@ def update_widgets(self) -> bool:
657
657
if MediaCategories .is_ext_in_category (
658
658
ext , MediaCategories .IMAGE_ANIMATED_TYPES , mime_fallback = True
659
659
):
660
- if self .preview_gif .movie ():
661
- self .preview_gif .movie ().stop ()
662
- self .gif_buffer .close ()
663
-
664
- ba : bytes
665
660
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 ()
704
707
705
708
image = None
706
709
if (
0 commit comments