@@ -111,35 +111,41 @@ def __init__(self, library: Library, driver: "QtDriver"):
111
111
112
112
qmovie_formats = QMovie .supportedFormats ()
113
113
114
- self .preview_ani_img_fmts = [fmt .data ().decode ('utf-8' ) for fmt in qmovie_formats ]
114
+ self .preview_ani_img_fmts = [
115
+ fmt .data ().decode ("utf-8" ) for fmt in qmovie_formats
116
+ ]
115
117
116
- ani_img_priority_order = [' jxl' , ' apng' , ' png' , ' webp' , ' gif' ]
118
+ ani_img_priority_order = [" jxl" , " apng" , " png" , " webp" , " gif" ]
117
119
118
- self .preview_ani_img_pil_map = {
119
- "apng" : "png"
120
- }
120
+ self .preview_ani_img_pil_map = {"apng" : "png" }
121
121
122
- self .preview_ani_img_pil_map_args = {
123
- "gif" : {"disposal" : 2 }
124
- }
122
+ self .preview_ani_img_pil_map_args = {"gif" : {"disposal" : 2 }}
125
123
126
124
self .preview_ani_img_pil_known_good = {"webp" , "gif" }
127
125
128
- self .preview_ani_img_fmts .sort (key = lambda x : ani_img_priority_order .index (x ) if x in ani_img_priority_order else len (ani_img_priority_order ))
126
+ self .preview_ani_img_fmts .sort (
127
+ key = lambda x : ani_img_priority_order .index (x )
128
+ if x in ani_img_priority_order
129
+ else len (ani_img_priority_order )
130
+ )
129
131
130
- logging .info ("supported qmovie image format(s): " + str (self .preview_ani_img_fmts ))
132
+ logging .info (
133
+ "supported qmovie image format(s): " + str (self .preview_ani_img_fmts )
134
+ )
131
135
132
136
pil_exts = Image .registered_extensions ()
133
137
self .pil_save_exts = {ex for ex , f in pil_exts .items () if f in Image .SAVE }
134
138
135
- logging .info ("supported pil save exts: " + str (self .pil_save_exts ))
139
+ logging .info ("supported pil save exts: " + str (self .pil_save_exts ))
136
140
137
141
self .preview_ani_img_qbuffer = QBuffer ()
138
142
self .preview_ani_img_movie = QMovie ()
139
143
140
144
self .preview_ani_img = QLabel ()
141
145
self .preview_ani_img .setMinimumSize (* self .img_button_size )
142
- self .preview_ani_img .setContextMenuPolicy (Qt .ContextMenuPolicy .ActionsContextMenu )
146
+ self .preview_ani_img .setContextMenuPolicy (
147
+ Qt .ContextMenuPolicy .ActionsContextMenu
148
+ )
143
149
self .preview_ani_img .setCursor (Qt .CursorShape .ArrowCursor )
144
150
self .preview_ani_img .addAction (self .open_file_action )
145
151
self .preview_ani_img .addAction (self .open_explorer_action )
@@ -293,8 +299,6 @@ def __init__(self, library: Library, driver: "QtDriver"):
293
299
root_layout .setContentsMargins (0 , 0 , 0 , 0 )
294
300
root_layout .addWidget (splitter )
295
301
296
-
297
-
298
302
def fill_libs_widget (self , layout : QVBoxLayout ):
299
303
settings = self .driver .settings
300
304
settings .beginGroup (SettingItems .LIBS_LIST )
@@ -600,36 +604,69 @@ def update_widgets(self):
600
604
image = Image .open (str (filepath ))
601
605
if hasattr (image , "n_frames" ):
602
606
if image .n_frames > 1 :
603
- logging .info ("treating as animated image: " + str (filepath .name )+ " with: " + str (image .n_frames )+ " frames" )
607
+ logging .info (
608
+ "treating as animated image: "
609
+ + str (filepath .name )
610
+ + " with: "
611
+ + str (image .n_frames )
612
+ + " frames"
613
+ )
604
614
605
615
if not ext .lstrip ("." ) in self .preview_ani_img_fmts :
606
616
try :
607
- logging .info ("converting image not nativly supported by qt" )
617
+ logging .info (
618
+ "converting image not nativly supported by qt"
619
+ )
608
620
save_buf = io .BytesIO ()
609
621
save_ext = ""
610
622
611
623
for fmt_ext in self .preview_ani_img_fmts :
612
- fmt_ext = self .preview_ani_img_pil_map .get (fmt_ext , fmt_ext )
613
-
614
- if fmt_ext in self .preview_ani_img_pil_known_good :
615
- if f".{ fmt_ext } " in self .pil_save_exts :
624
+ fmt_ext = (
625
+ self .preview_ani_img_pil_map .get (
626
+ fmt_ext , fmt_ext
627
+ )
628
+ )
629
+
630
+ if (
631
+ fmt_ext
632
+ in self .preview_ani_img_pil_known_good
633
+ ):
634
+ if (
635
+ f".{ fmt_ext } "
636
+ in self .pil_save_exts
637
+ ):
616
638
save_ext = fmt_ext
617
639
break
618
640
619
641
if save_ext == "" :
620
642
anim_failed = True
621
643
622
644
else :
623
- extra_args = self .preview_ani_img_pil_map_args .get (save_ext , {})
624
- image .save (save_buf , format = save_ext , lossless = True , save_all = True , loop = 0 , ** extra_args )
625
-
626
- self .set_new_anim_img (save_buf .getvalue (), image , False )
645
+ extra_args = self .preview_ani_img_pil_map_args .get (
646
+ save_ext , {}
647
+ )
648
+ image .save (
649
+ save_buf ,
650
+ format = save_ext ,
651
+ lossless = True ,
652
+ save_all = True ,
653
+ loop = 0 ,
654
+ ** extra_args ,
655
+ )
656
+
657
+ self .set_new_anim_img (
658
+ save_buf .getvalue (), image , False
659
+ )
627
660
628
661
except Exception as err :
629
662
anim_failed = True
630
- print (f"error occurred while converting animated image: { err } " )
663
+ print (
664
+ f"error occurred while converting animated image: { err } "
665
+ )
631
666
else :
632
- self .set_new_anim_img (str (filepath ), image , True )
667
+ self .set_new_anim_img (
668
+ str (filepath ), image , True
669
+ )
633
670
634
671
if not anim_failed :
635
672
self .preview_img .hide ()
0 commit comments