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 voir Nom : image_fractale.jpg
Affichages : 1721
Taille : 71,5 Ko au lieu de me faire la bonne image (enregistrée en ppm P3):Nom : image_fractale_reussi.jpg
Affichages : 1647
Taille : 18,0 Ko .

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()
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.
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!