Bonjour à tous, je rencontre quelques problèmes en enregistrant une image ppm au format P6!
Lorsque, je l'enregistre au format P3, je n'ai aucun souci mais quand il s'agit de choisir un format qui prend (3*4/3) 4 fois moins de place, il se passe n'importe quoi!
Après avoir longuement cherché sur la toile, je n'ai trouvé aucun algorithme qui fonctionne! j'ai soit le message d'erreur suivant: TypeError: 'str' does not support the buffer interface ou bien il me crée une image comme celle que vous pouvez voirau lieu de me faire la bonne image (enregistrée en ppm P3):
.
La matrice est une liste de liste qui contient des nombres compris entre 0 et 1 selon la vitesse de la divergence de la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 fichier=open("image_fractale.ppm","w") fichier.write(str.encode("P6\n"+str(requeteur.largeur)+" "+str(requeteur.hauteur)+"\n255\n")) dico = {} for ligne in matrice: for valeur in ligne: if not(valeur in dico): dico[valeur] = [max(0,min(255,round(eval(requeteur.rvb[i])))) for i,d in enumerate([valeur,valeur,valeur])] for coul in dico[valeur]: #fichier.write(struct.pack('B',coul)) fichier.write(chr(coul)) fichier.close()
requeteur.rvb permet de transformer ces valeurs comprises entre 0 et 1 avec des entiers allant de 0 à 255. Par exemple, ici il vaut : ["255*(2**(-30*((d-1)**2)))","255*(2**(-40*((d-0.6)**2)))","160*(2**(-100*((d-0.3)**2)))"]. d étant la variable et chaque rang correspond à chaque couleur Rouge, Vert, Bleu.
Lorsque je remplace la première ligne par: fichier=open("image_fractale.ppm","wb"), il me renvoi une erreur!
Help, quelqu'un aurait-il une idée de la syntaxe à adopter? Merci!
Partager