Ajoutez le code suivant au fichier qr.py
def applique_masque(x, y, b):
m = 1 if (x + y) % 3 == 0 else 0
return b ^ m
def placer_module_donnee(img, x, y, b):
placer_module(img, x, y, couleur_module(applique_masque(x, y, b)))
def placer_octet_montant(img, octet, x, y):
for i in range(8):
dx = i % 2
dy = i // 2
placer_module_donnee(img, x + dx, y + dy, bit(octet, i))
def placer_octet_descendant(img, octet, x, y):
for i in range(8):
dx = i % 2
dy = 3 - (i // 2)
placer_module_donnee(img, x + dx, y + dy, bit(octet, i))
def placer_octet_montant_separe(img, octet, x, y):
for i in range(8):
dx = i % 2
dy = i // 2 + i // 4
placer_module_donnee(img, x + dx, y + dy, bit(octet, i))
def placer_octet_descendant_separe(img, octet, x, y):
for i in range(8):
dx = i % 2
dy = 4 - (i // 2) - (i // 4)
placer_module_donnee(img, x + dx, y + dy, bit(octet, i))
def placer_modules_donnees(img, octets):
for i in range(3):
placer_octet_montant(img, octets[i], 19, 17 - i * 4)
for i in range(3):
placer_octet_descendant(img, octets[3 + i], 17, 9 + i * 4)
for i in range(3):
placer_octet_montant(img, octets[6 + i], 15, 17 - i * 4)
for i in range(3):
placer_octet_descendant(img, octets[9 + i], 13, 9 + i * 4)
for i in range(3):
placer_octet_montant(img, octets[12 + i], 11, 17 - i * 4)
placer_octet_montant_separe(img, octets[15], 11, 4)
placer_octet_montant(img, octets[16], 11, 0)
placer_octet_descendant(img, octets[17], 9, 0)
placer_octet_descendant_separe(img, octets[18], 9, 4)
for i in range(3):
placer_octet_descendant(img, octets[19 + i], 9, 9 + i * 4)
placer_octet_montant(img, octets[22], 7, 9)
placer_octet_descendant(img, octets[23], 4, 9)
placer_octet_montant(img, octets[24], 2, 9)
placer_octet_descendant(img, octets[25], 0, 9)Ajouter le code suivant au fichier encodeur.py
def encode_message(message):
bits = 0b0100
octets_message = message.encode('iso-8859-1')
longueur = len(octets_message)
if longueur > 17:
raise ValueError('Le message est trop long')
bits <<= 8
bits ^= longueur
for octet in octets_message:
bits <<= 8
bits ^= octet
bits <<= 4
for i in range(17 - longueur):
bits <<= 8
if i % 2 == 0:
bits ^= 236
else:
bits ^= 17
octets = []
for i in range(19):
octets.insert(0, bits & 255)
bits >>= 8
return octets