9
9
from tkinter import Button , Tk , Frame , Entry , Label , Checkbutton , BooleanVar , StringVar
10
10
import sys
11
11
from numba import jit
12
+ from tkinter .filedialog import askopenfilename
12
13
13
14
# =============================================================================
14
15
#Variables & constants initialisation (don't change)
@@ -425,10 +426,6 @@ def gif(nbr_offset):
425
426
offset_X_temp = int (axe_X / nbr_offset ) #at the end to have offset=0 for the first iteration
426
427
offset_X_tot += offset_X_temp
427
428
# =============================================================================
428
- img_original = Image .open (nom_image , mode = 'r' ) #use equirectangular images
429
- img_debut = resize_img (img_original ,final_size_img )
430
- print ("FOV " ,FOV_img ,"*" ,FOV_img_Y ,"°\n " ,sep = '' )
431
- #------------------------------------------------------------------------------
432
429
def black_hole ():
433
430
global left_side ,right_side ,up_side ,down_side ,interpolation ,img_debut ,D ,Rs ,deviated_angle_splin ,seen_angle_splin ,img_res ,seen_angle ,deviated_angle ,offset_X_tot ,FOV ,FOV_img ,last_angle
434
431
vrai_debut = time .process_time ()
@@ -476,6 +473,14 @@ def black_hole():
476
473
vrai_fin = time .process_time ()
477
474
print ("\n global computing time:" ,round (vrai_fin - vrai_debut ,1 ))
478
475
# =============================================================================
476
+ def open_image (nom_image ):
477
+ img_original = Image .open (nom_image , mode = 'r' ) #use equirectangular images
478
+ img_debut = resize_img (img_original ,final_size_img )
479
+ print ("FOV " ,FOV_img ,"*" ,FOV_img_Y ,"°\n " ,sep = '' )
480
+ return [img_original , img_debut ]
481
+
482
+ [img_original , img_debut ] = open_image (nom_image )
483
+
479
484
black_hole ()
480
485
# =============================================================================
481
486
zoom = 0
@@ -608,6 +613,25 @@ def save_gif(): # function that listens to click event
608
613
message3 ["text" ] = "Save: " + nom_court + " D=" + str (D )+ " Rs=" + str (Rs )+ " size=" + str (final_size_img )+ " offset_X=*" + extension
609
614
except :
610
615
message3 ["text" ] = "need integer"
616
+
617
+ def open_file_name ():
618
+ # https://gist.github.com/Yagisanatode/0d1baad4e3a871587ab1
619
+ global nom_image , nom_court , extension , img_original , img_debut , img
620
+ nom_image = askopenfilename (initialdir = "C:/Users/Batman/Documents/Programming/tkinter/" ,
621
+ filetypes = [("Image File" , ".png .jpg" )],
622
+ title = "Choose a image."
623
+ )
624
+ if nom_image :
625
+ [img_original , img_debut ] = open_image (nom_image )
626
+ [img_original , img_debut ] = open_image (nom_image )
627
+ img2 = Image .new ( 'RGBA' , (axe_X ,axe_Y )) #creat a transparent image (outside of the function to recover info if must stop loop)
628
+ img2 = img_pixels (img_debut ,img2 )
629
+ img = ax .imshow (img2 )
630
+ fig .canvas .draw ()
631
+ message2 ["text" ] = "Done !"
632
+ else :
633
+ print ("cancel" )
634
+
611
635
# =============================================================================
612
636
root = Tk ()
613
637
frame = Frame (root )
@@ -616,60 +640,63 @@ def save_gif(): # function that listens to click event
616
640
#bottomframe = Frame(root) #si bas diff du haut (inbrique plusieurs widgets)
617
641
#bottomframe.pack( side = "bottom" )
618
642
643
+ open_file_button = Button (frame , text = "Open image" , width = 14 , command = open_file_name )
644
+ open_file_button .grid (row = 0 , column = 0 )
645
+
619
646
L1 = Label (frame , text = "Radius" )
620
- L1 .grid (row = 0 , column = 0 )
647
+ L1 .grid (row = 1 , column = 0 )
621
648
radius = Entry (frame ,textvariable = StringVar (frame , value = Rs ), bd = 2 , width = 7 )
622
- radius .grid (row = 0 , column = 1 )
649
+ radius .grid (row = 1 , column = 1 )
623
650
624
651
L2 = Label (frame , text = "Distance" )
625
- L2 .grid (row = 1 , column = 0 )
652
+ L2 .grid (row = 2 , column = 0 )
626
653
distance = Entry (frame ,textvariable = StringVar (frame , value = D ), bd = 2 , width = 7 )
627
- distance .grid (row = 1 , column = 1 )
654
+ distance .grid (row = 2 , column = 1 )
628
655
629
656
compute_button = Button (frame , text = "Compute" , width = 14 , command = compute )
630
- compute_button .grid (row = 0 , column = 2 )
657
+ compute_button .grid (row = 1 , column = 2 )
631
658
632
659
message = Label (frame , text = "" , width = 20 ) #allow to display message when activate [text]
633
- message .grid (row = 0 , column = 3 )
660
+ message .grid (row = 1 , column = 3 )
634
661
message5 = Label (frame , text = "" , width = 20 ) #allow to display message when activate [text]
635
- message5 .grid (row = 1 , column = 3 )
662
+ message5 .grid (row = 2 , column = 3 )
636
663
637
664
L3 = Label (frame , text = "Image size" )
638
- L3 .grid (row = 2 , column = 0 )
665
+ L3 .grid (row = 3 , column = 0 )
639
666
size = Entry (frame ,textvariable = StringVar (frame , value = final_size_img ), bd = 2 , width = 7 )
640
- size .grid (row = 2 , column = 1 )
667
+ size .grid (row = 3 , column = 1 )
641
668
642
669
size_button = Button (frame , text = "Resolution" , width = 14 , command = increase_resolution )
643
- size_button .grid (row = 2 , column = 2 )
670
+ size_button .grid (row = 3 , column = 2 )
644
671
645
672
message2 = Label (frame , text = "" , width = 20 ) #allow to display message when activate [text]
646
- message2 .grid (row = 2 , column = 3 )
673
+ message2 .grid (row = 3 , column = 3 )
647
674
648
675
save_button = Button (frame , text = "Save image" , width = 14 , command = save_file )
649
- save_button .grid (row = 3 , column = 2 )
676
+ save_button .grid (row = 4 , column = 2 )
650
677
651
678
message4 = Label (frame , text = "" ) #allow to display message when activate [text]
652
- message4 .grid (row = 3 , column = 3 )
679
+ message4 .grid (row = 4 , column = 3 )
653
680
654
681
message6 = Label (frame , text = "Fix background" ) #allow to display message when activate [text]
655
- message6 .grid (row = 4 , column = 0 )
682
+ message6 .grid (row = 5 , column = 0 )
656
683
657
684
fixed_background = BooleanVar ()
658
685
C1 = Checkbutton (frame , text = "" , variable = fixed_background , \
659
686
onvalue = True , offvalue = False )
660
- C1 .grid (row = 4 , column = 1 )
687
+ C1 .grid (row = 5 , column = 1 )
661
688
662
689
L4 = Label (frame , text = "images" )
663
- L4 .grid (row = 5 , column = 0 )
690
+ L4 .grid (row = 6 , column = 0 )
664
691
665
692
number = Entry (frame ,textvariable = StringVar (frame , value = 10 ), bd = 2 , width = 7 )
666
- number .grid (row = 5 , column = 1 )
693
+ number .grid (row = 6 , column = 1 )
667
694
668
695
save_gif_button = Button (frame , text = "Save animation" , width = 14 , command = save_gif )
669
- save_gif_button .grid (row = 5 , column = 2 )
696
+ save_gif_button .grid (row = 6 , column = 2 )
670
697
671
698
message3 = Label (frame , text = "" ) #allow to display message when activate [text]
672
- message3 .grid (row = 5 , column = 3 )
699
+ message3 .grid (row = 6 , column = 3 )
673
700
674
701
root .mainloop ()
675
702
#raise SystemExit #not needed and too brutal
0 commit comments