Bonjour à tous
Je suis nouveau ici, et je suis un élève de Terminale S spé ISN.
Je suis en train de programmer, en langage Python, de façon à rendre une image négative, c'est-à-dire que les couleurs de chaque octets soient négatif (blanc => noir, etc...)
L'image doit ressembler à ce genre de couleurs : http://totographe.free.fr/public/tut...f/negatif3.jpg
Je possède 2 fichiers, 04 (image bmp de base), et 04_negatif (image bmp à rendre négatif).
En codage, je dispose uniquement des fonctions:
-Open, Close, Seek, Read, Write (pour le traitement d'un fichier)
-Les fonctions Unpack pour convertir un binaire en décimal, et inversement avec Pack.
-Les bases comme la boucle For / While
Le but du jeu est de remplacer chaque couleur en complémentaire, le calcul est : "Octet_Complémentaire" = | "Octet" - 255 |
Mon programme actuel, pour ce but, est :
Mais je rencontre un problème dont j'ignore : "unpack requires a bytes object of length 1" et la ligne d'erreur est : "a = unpack('B',octet_lu)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 from struct import * fic_src = open("04.bmp","rb") fic_dst = open("04_negatif.bmp","wb") for i in range(55, 1488057): #Pour i allant du 55ème octet (début codage image) au 1488056ème octet (fin codage image). fic_src.seek(i) #Je cherche le ième octet du fichier 04.bmp. octet_lu = fic_src.read(i) #J'affecte cette représentation binaire à "octet_lu" pour plus de facilité. a = unpack('B',octet_lu) #J'affecte à "a" la valeur décimale de "octet_lu" nouvelle_valeur_decimal = a [0]-255 #Calcul pour obtenir la valeur décimale complémentaire : comp = |coul-255| if nouvelle_valeur_decimal < 0 : nouvelle_valeur_decimal = - nouvelle_valeur_decimal #Règle de la valeur absolue nouvelle_valeur = pack('B',nouvelle_valeur_decimal)#Nouvelle valeur binaire fic_dst.write(nouvelle_valeur)#Je l'écris dans le nouveau fichier, afin de le rendre négatif. (avec la boucle, on aura modifier chaque octet du traitement de l'image) fic_src.close fic_dst.close #Je ferme les deux fichiers.
Cela fait depuis longtemps que j'essaye de trouver un programme cohérent...
C'est pour cela que je fais appel à votre aide
Je vous remercie pour votre lecture !![]()
Partager