Optimisation de programme
Résolu
Trompettesib
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Trompettesib Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Trompettesib Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour !
Je me demande si vous auriez la réponse ...
J'ai fait ce programme pour faire un cadre autour d'une photo mais pour plus de 10 pixels ça prend un temps de dingue ...
Auriez-vous une idée pour optimiser la chose ?
Je me demande si vous auriez la réponse ...
J'ai fait ce programme pour faire un cadre autour d'une photo mais pour plus de 10 pixels ça prend un temps de dingue ...
Auriez-vous une idée pour optimiser la chose ?
from PIL import Image
def modif(fich,rnouveau,vnouveau,bnouveau,nombredepixel,larg,haut) :
for x in range(fich.size[0]) :
for y in range (fich.size[1]) :
(r,v,b) = fich.getpixel((x,y))
img_out.putpixel((x+nombredepixel,y+nombredepixel),(r,v,b))
for i in range (0,nombredepixel) :
img_out.putpixel((i,y+nombredepixel),(rnouveau,vnouveau,bnouveau))
img_out.putpixel((x+nombredepixel,i),(rnouveau,vnouveau,bnouveau))
for i in range (0,nombredepixel) :
img_out.putpixel((larg+i+nombredepixel,y+nombredepixel),(rnouveau,vnouveau,bnouveau))
img_out.putpixel((x+nombredepixel,haut+i+nombredepixel),(rnouveau,vnouveau,bnouveau))
for i in range (0,nombredepixel) :
for j in range (0,nombredepixel) :
img_out.putpixel((i,j),(rnouveau,vnouveau,bnouveau))
for i in range (0,nombredepixel) :
for j in range (0,nombredepixel) :
img_out.putpixel((i+larg+nombredepixel,j+haut+nombredepixel),(rnouveau,vnouveau,bnouveau))
for i in range (0,nombredepixel) :
for j in range (0,nombredepixel) :
img_out.putpixel((i+larg+nombredepixel,j),(rnouveau,vnouveau,bnouveau))
for i in range (0,nombredepixel) :
for j in range (0,nombredepixel) :
img_out.putpixel((i,j+haut+nombredepixel),(rnouveau,vnouveau,bnouveau))
print ("veuillez saisir exactement le nom ainsi que l'extention de l'image")
'''imagesélectionné = input("nom de l'image")'''
print ("Sélectionner la couleur du cadre ainsi que son nombre de pixel")
'''rnouveau = int(input("r"))
vnouveau = int(input("v"))
bnouveau = int(input("b"))'''
rnouveau = 50
vnouveau = 255
bnouveau = 255
imagesélectionné = "images.jpg"
nombredepixel = int(input("nombre de pixel"))
img = Image.open(imagesélectionné)
'''img.show()'''
larg,haut = img.size
img_out = Image.new("RGB",(larg+(nombredepixel*2),haut+(nombredepixel*2)))
modif(img,rnouveau,vnouveau,bnouveau,nombredepixel,larg,haut)
img_out.show()
3 réponses
-
Bonsoir
il y a un truc primordial avec Python, c'est l'indentation, or par défaut le site supprime les tabulations et les espaces en double.
Du coup, ton code est inexploitable.
Merci donc de lire ceci https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code et de reposter ton code correctement.
-
Bonsoir.
Ton script est beaucoup trop complexe pour faire ce genre de chose, je ne connais pas trop PIL, mais ce que tu désires faire s'obtient en quelques lignes de codes.
def encadrer(img, bord, couleur): larg, haut = img.size larg += bord * 2 haut += bord * 2 cadre = Image.new('RGB', (larg, haut), couleur) cadre.paste(img, box=(bord, bord)) return cadre img = Image.open("images.jpg") cadre = encadrer(img, 15, (50, 255, 255)) cadre.show()
Là, le cadre est simplement la couleur de remplissage de la nouvelle image, si tu souhaites obtenir quelque chose de plus élaboré, il faudra te tourner vers le sous module ImageDraw de PIL pour dessiner des lignes, rectangles, cercles, etc, pour agrémenter ton cadre. -
Le problème en fait c'est que il ne faut pas partir avec des librairies trop complexes dès le début ... et surtout faire des choses simples !!!!