bebertii

Untitled

Nov 17th, 2020
753
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- coding: utf-8 -*-
  2. from tkinter import filedialog,Tk
  3. from PIL import Image
  4.  
  5. def fichier(action):
  6.     popup=Tk()
  7.     if action=="ouvrir":
  8.         chemin_fichier =  filedialog.askopenfilename(initialdir = "./",title = "Choisissez votre fichier")
  9.     elif action=="enregistrer":
  10.         chemin_fichier =  filedialog.asksaveasfilename(initialdir = "./",title = "Nom du fichier à enregistrer")
  11.     else:
  12.         chemin_fichier=False
  13.     popup.destroy()
  14.     return chemin_fichier
  15.  
  16.  
  17. def assemblage(pixel1,pixel2):
  18.     sortie=[]
  19.     for i in range(3):
  20.         sortie.append(((pixel1[i]>>4)<<4)+(pixel2[i]>>4))
  21.     return tuple(sortie)
  22.  
  23. def dessemblage(pixel):
  24.     sortie=[]
  25.     for i in range(3):
  26.         sortie.append((pixel[i]<<4)%256)
  27.     return tuple(sortie)
  28.  
  29. def stegano():
  30.     image_source=Image.open(fichier("ouvrir"))
  31.     image_cachee=Image.open(fichier("ouvrir"))
  32.     resultat=Image.new("RGB",(min(image_source.size[0],image_cachee.size[0]),min(image_source.size[1],image_cachee.size[1])))
  33.     for i in range(min(image_source.size[0],image_cachee.size[0])):
  34.         for j in range(min(image_source.size[1],image_cachee.size[1])):
  35.             pixel_source=image_source.getpixel((i,j))
  36.             pixel_cache=image_cachee.getpixel((i,j))
  37.             resultat.putpixel((i,j),assemblage(pixel_source,pixel_cache))
  38.     resultat.show()
  39.     resultat.save(fichier("enregistrer"))
  40.  
  41. def destegano():
  42.     image=Image.open(fichier("ouvrir"))
  43.     for i in range(image.size[0]):
  44.         for j in range(image.size[1]):
  45.             pixel_source=dessemblage(image.getpixel((i,j)))
  46.            
  47.             image.putpixel((i,j),pixel_source)
  48.     image.show()
  49.  
  50.            
  51.                    
RAW Paste Data