Bonsoir, je souhaite réaliser une machine a photo en python… j’aimerai placer une photo par defaut dans une frame lorsque mon application se lance (plus tard, lorsque j’aurai prit une photo, je voudrai que la nouvelle photo prise remplace l’ancienne…). Seulement lorsque je place ma photo dans la frame (1920x1080) je souhaite qu’elle fasse la même taille que cette frame sans être rognée ce qui pour le moment est le cas (voir l.85).
Toute aide est la bienvenue !
PS : je débute et je n’ai pas reçu de formation en Python donc soyez indulgent sur la qualité du code…
mon code :
from tkinter import *
from picamera import PiCamera
import time
from time import sleep
from PIL import Image, ImageTk
import os
from pynput import keyboard
camera = PiCamera()
###chemin d'accès photos
path = '/home/pi/Desktop/Python/Projet/Photos/Photo'
###décompte en secondes
count = 2
###personnalisation de la camera
camera.resolution = (1920,1080)
camera.framerate = 60
###fonction camera
def take_a_photo():
###date/heure (locale) de la photo
dateiso = time.strftime("%Y-%m-%d_%H-%M-%S")
camera.start_preview(fullscreen = False, window = (50,50,640,480))
countdown(count)
camera.capture(path+'_'+dateiso+'.jpeg')
photo_name = (path+'_'+dateiso+'.jpeg')
count_label.config(text='Photographie effectuée')
camera.stop_preview()
#####maphoto = Image.open(path+'_'+dateiso+'.jpeg') ## Chargement d'une image à partir de PIL
#####photo = ImageTk.PhotoImage(maphoto)
#####photo_label = Label(frame, image=photo)
#####photo_label.image = photo
print (photo_name)
photo = Image.open(photo_name)
photo.show(photo_label)
###fonction horloge
def digital_clock():
time_live = time.strftime("%H:%M:%S")
horloge.config(text=time_live)
###actualisation toutes les 500ms
horloge.after(500, digital_clock)
###fonction décompte
def countdown(count):
while count:
mins, secs = divmod(count, 60)
timer = '{:d}'.format(secs)
#count_label.config(text=count)
print(timer, end="\r")
time.sleep(1)
count -= 1
print('Photographie effectuée')
###creation mainWindow
mainWindow = Tk()
###personnalisation de la fenetre
mainWindow.title("PhotoBox")
mainWindow.config(background='black')
mainWindow.attributes('-fullscreen', True) #application en plein écran
mainWindow.bind('<Escape>',lambda e: mainWindow.destroy()) #pour enlever le plein écran et quitter
###creation frame
frame = Frame(mainWindow, width=350, height=200, bg='black')
###ajout texte
label_title = Label(mainWindow, text="PhotoBox", font=("koliko-Bold.ttf", 30), bg='black',fg='white')
###ajout décompte
count_label = Label(frame, font=("koliko-Bold.ttf", 20), bg='black', fg='white')
###ajout bouton photo
photo_button = Button(frame, text="Prendre une photo", font=("koliko-Bold.ttf", 20), bg='white', fg='black', command=take_a_photo)
###ajout commentaires
commentaries_label = Label(frame, text="Merci de rester immobile pendant la prise", font=("koliko-Bold.ttf", 10), bg='black', fg='white')
###photo
maphoto = Image.open("Photos/Photo2023-09-2817-26-42.jpeg") ## Chargement d'une image à partir de PIL
photo = ImageTk.PhotoImage(maphoto) ## Création d'une image compatible Tkinter
photolabel = Label(frame, image=photo, width = 500, height = 400)
photolabel.image = photo # Maintient en vie de photo dans un objet non détruit
###ajout horloge
horloge = Label(mainWindow, font="koliko-Bold.ttf", bg='black', fg='white')
""" +CREATION+ """
""" -CREATION- """
""" +PLACEMENT+ """
label_title.pack(pady=(50,0))
horloge.pack()
frame.pack(expand=True)
photo_label.grid(row=0, column=0)
count_label.grid(row=1, column=0)
photo_button.grid(row=2, column=0)
commentaries_label.grid(row=3, column=0)
""" -PLACEMENT- """
###appel de la fonction horloge
digital_clock()
###affichage
mainWindow.mainloop()
+0
-0