A voir également:
- Accélérer programme
- Accelerer windows 10 - Guide
- Accelerer une video - Guide
- Programme demarrage windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Accélérer le temps minecraft - Forum Minecraft
2 réponses
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
Modifié par jisisv le 22/11/2015 à 15:32
Modifié par jisisv le 22/11/2015 à 15:32
Alors là, comme code mal fichu, complètement inefficace, c'est champion
Bref ceci sera plus efficace, quoi que plus gourmand en mémoire.
Maintenant, quel est l'intérêt de créer les objets im2, ... , im5 dans la mesure où
DONC 3 tableaux suffiraient amplement et tu éviterais les appels à getpixel dans la seconde boucle. Je te laisse faire les modifications.
Exemple:
johand@bata:~/src/CCM/PYTHON/popart$ identify pink.jpeg
pink.jpeg JPEG 425x272 425x272+0+0 8-bit sRGB 21.2KB 0.000u 0:00.000
johand@bata:~/src/CCM/PYTHON/popart$ time python popart.py
real 0m2.967s
user 0m2.936s
sys 0m0.024s
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
- regroupe tes boucles concernant les différents plans
- quel est l'intérêt de sauvegarder l'image sur disque à chaque appel de la méthode putpixel Réalises-tu ce que ce la représente, même pour une image de faible taille ?
- idem pour la création de la sortie (pour laquelle tu ne fais même pas de copie en système de fichier ! un comble)
Bref ceci sera plus efficace, quoi que plus gourmand en mémoire.
from PIL import Image #path=input("veuillez entrer le chemin de l'image que vous souhaitez modifier") path="pink.jpeg" im =Image.open(path) im.show() larg,haut=im.size im2=Image.new("RGB",(larg,haut)) im3=Image.new("RGB",(larg,haut)) im4=Image.new("RGB",(larg,haut)) im5=Image.new("RGB",(larg,haut)) for x in range(larg): for y in range(haut): (r,v,b)=im.getpixel((x,y)) im2.putpixel((x,y),(r,0,0)) im3.putpixel((x,y),(0,v,0)) im4.putpixel((x,y),(0,0,b)) im5.putpixel((x,y),(r,v,0)) img_sortie=Image.new("RGB",(2*larg,2*haut)) for x in range(larg): for y in range(haut): img_sortie.putpixel((x,y),im2.getpixel((x,y))) img_sortie.putpixel((x+larg,y),im3.getpixel((x,y))) img_sortie.putpixel((x,y+haut),im4.getpixel((x,y))) img_sortie.putpixel((x+larg,y+haut),im5.getpixel((x,y))) img_sortie.save("POPOART.jpeg") img_sortie.show()
Maintenant, quel est l'intérêt de créer les objets im2, ... , im5 dans la mesure où
- un seul plan de couleur est significatf
- tu n'effectues (je peux me tromper sur tes intentions !) aucn export de ces objets.
DONC 3 tableaux suffiraient amplement et tu éviterais les appels à getpixel dans la seconde boucle. Je te laisse faire les modifications.
Exemple:
johand@bata:~/src/CCM/PYTHON/popart$ identify pink.jpeg
pink.jpeg JPEG 425x272 425x272+0+0 8-bit sRGB 21.2KB 0.000u 0:00.000
johand@bata:~/src/CCM/PYTHON/popart$ time python popart.py
real 0m2.967s
user 0m2.936s
sys 0m0.024s
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)