Ascii Art
Résolu
Bonsoir! J'ai un mini problème avec mon programme pour créer un Ascii Art à partir d'une image.
Je voudrais savoir comment régler ce problème et surtout savoir si mon programme présente un problème (même si je suis sûre qu'il y en a sinon je ne serai pas ici).
Je sais qu'il faut que je convertisse d'abord l'image en niveaux de gris (c'est fait) mais la partie la plus compliquée reste la suite, transformer un pixel en caractère Ascii. Et c'est là où je bloque. Il faut aussi que j'ouvre l'image en fichier texte mais, je suis également bloquée dessus.
Lorsque je lance ce programme, on m'affiche comme message d'erreur à la ligne 22: "list indices must be integers, not str"
Je pense que c'est le mieux que je puisse faire avec mes compétences actuelles.
Merci d'avance pour votre aide ^^ (si vous voulez bien m'aider)
Je voudrais savoir comment régler ce problème et surtout savoir si mon programme présente un problème (même si je suis sûre qu'il y en a sinon je ne serai pas ici).
Je sais qu'il faut que je convertisse d'abord l'image en niveaux de gris (c'est fait) mais la partie la plus compliquée reste la suite, transformer un pixel en caractère Ascii. Et c'est là où je bloque. Il faut aussi que j'ouvre l'image en fichier texte mais, je suis également bloquée dessus.
Lorsque je lance ce programme, on m'affiche comme message d'erreur à la ligne 22: "list indices must be integers, not str"
Je pense que c'est le mieux que je puisse faire avec mes compétences actuelles.
from PIL import Image
imageAscii= Image.open("Capture.jpg")
largeur, hauteur=imageAscii.size
imageBut=Image .new( "RGB" , ( largeur , hauteur ) )
for i in range (hauteur):
for j in range (largeur):
p=imageAscii.getpixel((j,i))
gris=int((p[0]+p[1]+p[2])/3)
p=(gris,gris,gris)
imageBut.putpixel((j,i),p)
ascii =['@','%','#','*','+','=',':','.',' ']
f=open("asciiTest.txt","w")
for x in range (hauteur):
for y in range (largeur):
p=imageAscii.getpixel((x,y))
if 225<gris<255:
print(ascii[' '])
if 200<gris<225:
print(ascii['.'])
if 175<gris<200:
print(ascii[':'])
if 150<gris<175:
print(ascii['='])
if 125<gris<150:
print(ascii['+'])
if 100<gris<125:
print(ascii['*'])
if 75<gris<100:
print(ascii['#'])
if 25<gris<50:
print(ascii['%'])
if 0<gris<25:
print(ascii['@'])
f.close()
imageBut.save("Test.jpg")
imageBut.show()
Merci d'avance pour votre aide ^^ (si vous voulez bien m'aider)
5 réponses
-
ModérateurBonjour,
Suite à ton signalement :
Étant donner que le sujet a été résolue... pourriez vous effacer le topic s'il vous plaît? Comme je l'ai explicitement signaler avant, je ne souhaite pas partager ce code afin qu'il soit recopier par d'autres personnes. Merci.
Non ! Il ne sera pas effacé.
Le principe du forum est que les personnes puissent aider à résoudre des soucis...... soucis que d'autres peuvent également rencontrer un jour.
Ca ne sert donc à rien de venir demander la suppression de ce message.Je sais qu'il faut laisser pour d'autre personne qui ont un problème similaire... mais si c'est pour faire du copie collé... ou est l'intérêt?
L'intéret ? Que si d'autres personnes cherchent à résoudre le même souci que toi... qu'elles puissent trouver leur réponse sans qu'on ai besoin de refaire les mêmes explications.
Si on devait supprimer chaque message résolu pour éviter le "plagiat"... on n'en finirait pas de se répéter ( encore plus que maintenant... et c'est déjà assez casse pied comme ça )
