pixel de l'image à crypter |
pixel de la clef de codage |
pixel de l'image cryptée |
pixel de la clef de codage |
pixel de l'image décryptée |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 1 |
def code(nomFichImage1:str,nomFichImage2:str,nomFichClef:str):
'''
la fonction code prend en paramètres le nom des fichiers png de l'image à coder et de la clef, ainsi que de l'image qui va être codée.
la fonction ne renvoie rien, elle écrit le fichier de l'image codée sur le disque
'''
image1=Image.open(nomFichImage1)#recupération de l'image de de départ (à coder ou décoder)
clef=Image.open(nomFichClef)#recupération de la clef
image2=Image.new('RGB', (image1.size[0],image1.size[1]))#création de l'image finale (codée ou décodée)
pixelImage2=[0,0,0]
for i in range (image1.size[0]):
for j in range(image1.size[1]):
pixelImage1=image1.getpixel((i,j))#récupération du pixel de l'image de départ
pixelClef=clef.getpixel((i,j))#récupération du pixel de la clef
for k in range(3):#parcours des trois composantes RVB
pixelImage2[k]=pixelImage1[k]^pixelClef[k]#ouexclusif entre les trois composantes
image2.putpixel((i,j),tuple(pixelImage2))#le tableau pixelImage2 est transformé en tuple puis écrit dans l'image d'arrivée
image2.save(nomFichImage2)#l'imaage finale est écrit sur le disque
decode()
car c'est la même fonction que la fonction code()