Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Importer les librairies Pygame et PIL
- import pygame
- from PIL import Image
- from PIL import ImageFilter
- from pygame.locals import *
- pygame.init()
- #On créer une fonction modify qui prend 2 argument: l'image a modifié et la modification à éffectué
- def modify(modif, imageChoisie):
- #On ouvre l'image choisie
- if (imageChoisie == "etretat"):
- image = Image.open("src/etretat.jpg")
- elif(imageChoisie == "ndds"):
- image = Image.open("src/NDDS.JPG")
- #on récupére sa taille
- size = image.size
- #on décompose l'image pixel par pixel
- pixs = image.load()
- #on sépare de sa taille sa largeur et sa hauteur
- width = size[0]
- height = size[1]
- x=0
- y=0
- #Si la modification est un contour on applique un filtre de la librairie PIL
- if(modif == "contour"):
- image = image.filter(ImageFilter.CONTOUR)
- #Si c'est un seuillage on demande la valeur du Seuil
- elif(modif == "seuillage"):
- seuil = int(input("Seuil?"))
- #On fais deux boucle x et y pour faire pixel par pixel
- for x in range(width):
- for y in range(height):
- #on récupére la valeur du pixel au coordonées X et Y
- p = pixs[x, y]
- #Si la modification est un négatif on affecte au pixel la valeur de 255- sa valeur actuelle
- if(modif == "negatif"):
- pixs[x, y] = 255-p
- #Si la modification est un seuillage on affecte au pixel la valeur 0 si sa valeur actuelle est inférieure au seuil
- elif(modif == "seuillage"):
- if(p < seuil):
- pixs[x, y]=0
- #on sauvegarde l'image
- image.save(modif + ".jpg")
- # Ouvrir une fenêtre Pygame
- taille = largeur, hauteur = 300, 300
- ecran = pygame.display.set_mode(taille)
- pygame.display.set_caption("Modification d'image") # Nommer la fenêtre
- # Initialiser les variables
- continuer = 1 # Créer la variable continuer
- couleur_fond = 88,88,88 # Fond CYAN (codage RGB)
- #On charge les images des boutons
- etretat = pygame.image.load("src/boutonetretat.png").convert_alpha()
- ndds = pygame.image.load("src/boutonndds.png").convert_alpha()
- negatif = pygame.image.load("src/boutonnegatif.png").convert_alpha()
- contours = pygame.image.load("src/boutoncontour.png").convert_alpha()
- seuillage = pygame.image.load("src/boutonseuillage.png").convert_alpha()
- #On met à 0 les valeur Image et Modif
- image = "nul"
- modif = "nul"
- pygame.key.set_repeat(50, 5)
- # Boucle principale
- while continuer : # Tant que continuer = 1 la boucle est effective
- #Si image et modif on une valeur on apelle la fonction modify et on les remet à 0
- if (image != "nul" and modif != "nul"):
- modify(modif, image)
- image = "nul"
- modif = "nul"
- for event in pygame.event.get(): # Détection d'un évènement
- if event.type == QUIT:
- continuer = 0
- #On récupére l'evenement clic gauche de souris
- if event.type == MOUSEBUTTONDOWN:
- if event.button == 1:
- #on récupére la position du clic
- pos = event.pos
- x=pos[0]
- y=pos[1]
- #On vérifie si la position du clic est sur un bouton si oui on affecte la valeur du bouton a la valeur correspondante
- if (x > 50 and x < 150 and y > 50 and y < 150 and image == "nul"):
- image="etretat"
- elif (x > 175 and x < 275 and y > 50 and y < 150 and image == "nul"):
- image = "ndds"
- elif (x > 50 and x < 150 and y > 50 and y < 150 and image != "nul"):
- modif = "negatif"
- elif (x > 175 and x < 275 and y > 50 and y < 150 and image != "nul"):
- modif = "contour"
- elif ( x > 100 and x < 200 and y > 165 and y < 215 and image != "nul"):
- modif = "seuillage"
- #Affichage
- ecran.fill(couleur_fond) # Remplir la fenêtre avec la couleur de fond
- #Si la variable image n'a pas de valeur on affiche les deux boutons de choix d'image
- if (image == "nul"):
- ecran.blit(etretat, (50,50))
- ecran.blit(ndds, (175,50))
- #Si la variable image a une valeur on affiche les 3 boutons de choix de la modification
- if (image != "nul"):
- ecran.blit(negatif, (50,50))
- ecran.blit(contours, (175,50))
- ecran.blit(seuillage, (100,165))
- pygame.display.flip() # Rafraîchissement de la fenêtre
- #Fermeture de la fenêtre pygame
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement