Manipulation d'une image bitmap

Fermé
Ana-Phore - 2 févr. 2021 à 16:12
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 2 févr. 2021 à 16:42
Bonjour,
J'ai un programme qui permet de noircir complètement une image au format bitmap, et à partir de ce programme je dois en concevoir 2 autres.
Par exemple, le premier doit permettre de remplacer le contenu de l'image par le drapeau russe (3 bandes horizontales, 1 blanche, 1 bleue et 1 rouge).
Ce que j'ai compris du programme c'est que sur toutes les position de l'image, il écrit un 0.
Est-ce bien cela ? Et comment, dans un premier temps, changer la couleur de cette écriture ?
Le programme en question :
def lit(fichier, position, nb_octets): #lit une suite d'octet et en retourne la liste
fichier.seek(position)
return list(fichier.read(nb_octets))

def lit_entier(fichier, position, nb_octets): # lit un entier sur plusieurs octets
fichier.seek(position)
return int.from_bytes(fichier.read(nb_octets), byteorder="little", signed=True)

def ecrit(fichier, position, octet) : # ecrit un seul octet
fichier.seek(position)
fichier.write(bytes([octet]))

def ecrit_liste(fichier, position, octets) : # ecrit une liste d'octets
fichier.seek(position)
fichier.write(bytes(octets))

def ecrit_entier(fichier, position, entier, nb_octets): # ecrit un entier (sur plusieurs octets)
fichier.seek(position)
fichier.write(entier.to_bytes(nb_octets, byteorder='little', signed=True))

f = open("formes.bmp", 'r+b')
taille_fichier = lit_entier(f, 2, 4)
debut_image = lit_entier(f, 10, 4)
# Noircit toute l'image en remplissant l'image de 0
ecrit_liste(f, debut_image, [0] * (taille_fichier - debut_image))
f.close()


S'il manque des précisions, merci de me le faire remarquer.
Merci,



Configuration: Windows / Chrome 88.0.4324.104
A voir également:

2 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
2 févr. 2021 à 16:20
Bonjour Ana-phore,

L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :

def test():
    print('test')

test()
0
Désolée, je ne connais pas trop le fonctionnement du forum...
Comme cela ?

def lit(fichier, position, nb_octets): #lit une suite d'octet et en retourne la liste
    fichier.seek(position)
    return list(fichier.read(nb_octets))

def lit_entier(fichier, position, nb_octets): # lit un entier sur plusieurs octets
    fichier.seek(position)
    return int.from_bytes(fichier.read(nb_octets), byteorder="little", signed=True)

def ecrit(fichier, position, octet) : # ecrit un seul octet
    fichier.seek(position)
    fichier.write(bytes([octet]))

def ecrit_liste(fichier, position, octets) : # ecrit une liste d'octets
    fichier.seek(position)
    fichier.write(bytes(octets))

def ecrit_entier(fichier, position, entier, nb_octets): # ecrit un entier (sur plusieurs octets)
    fichier.seek(position)
    fichier.write(entier.to_bytes(nb_octets, byteorder='little', signed=True))

f = open("formes.bmp", 'r+b')
taille_fichier = lit_entier(f, 2, 4)
debut_image = lit_entier(f, 10, 4)
# Noircit toute l'image en remplissant l'image de 0
ecrit_liste(f, debut_image, [0] * (taille_fichier - debut_image))
f.close()
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 2 févr. 2021 à 16:44
Parfait !

C'est toi qui l'a écrit ?
0