Advertisement
Guest User

Untitled

a guest
May 27th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.46 KB | None | 0 0
  1. # programme de traitement d'images "contour"
  2. #
  3. #
  4. #
  5. # Ce programme est sous licence GPL
  6.  
  7.  
  8.  
  9.  
  10.  
  11. ##############################
  12. #                            #
  13. #   Fonctions & procedures   #
  14. #                            #
  15. ##############################
  16.  
  17.  
  18.  
  19. ########################
  20. # Fonctions générales
  21. ########################
  22.  
  23.  
  24. #I Fonction binéarisation des octets d'une image
  25.  
  26. def bin(n):
  27.     """
  28.   Cette fonction transforme un entier en bits dans un tableau.
  29.   """
  30.     t = int(n)
  31.     tb = [0]*8
  32.     for i in range(7,-1,-1):
  33.         tb[i] = t%2
  34.         t = t//2
  35.     return (tb)
  36.  
  37.  
  38. #II Fonction ouverture du fichier source en mode lecture d'octets
  39.  
  40. def ouverture (nomFichier) :
  41.     # ouverture du fichier source en mode lecture d'octets
  42.     fichierTraite = open(nomFichier,'rb')
  43.     print("Nom du Fichier :",fichierTraite)
  44.  
  45.     TailleFichier = len(fichierTraite.read())
  46.     print ("\nTaille du fichier (en octets) :",TailleFichier, "\n")
  47.  
  48.     # extraction des dimensions de l'image
  49.     fichierTraite.seek(0,0)
  50.     fichierTraite.readline()
  51.     fichierTraite.readline()
  52.     dimensions = fichierTraite.readline()
  53.     for i in range(len(dimensions)):
  54.         col = chr(dimensions[0])
  55.         i = 1
  56.     while dimensions[i] > 47 and dimensions[i] < 58:
  57.         col = col + chr(dimensions[i])
  58.         i = i + 1
  59.  
  60.     i = i + 1
  61.     lig = ""
  62.     while dimensions[i] > 47 and dimensions[i] < 58:
  63.         lig =lig + chr(dimensions[i])
  64.         i = i + 1
  65.  
  66.     col = int(col)
  67.     lig = int(lig)
  68.  
  69.     print("Largeur",col)
  70.     print("Hauteur",lig)
  71.  
  72.     fichierTraite.seek(0,0)
  73.     entete = fichierTraite.readline() + fichierTraite.readline() + fichierTraite.readline() + fichierTraite.readline()
  74.  
  75.     # lecture des donnees du fichier source
  76.     donnees = [i for i in fichierTraite.read()]
  77.     print("Longueur du fichier donnees : ",len(donnees),"\n")
  78.    
  79.     return(donnees,entete,col,lig)
  80.  
  81.  
  82.  
  83.  
  84.  
  85. ########################
  86. #                      #
  87. # Programme principal  #
  88. #    Décodage          #
  89. #                      #
  90. ########################
  91.  
  92.  
  93.  
  94. nomFichierDestination = "/Users/Badr-Eddine_SAHLA/Desktop/Informatique Science Numérique/Image/Image Nouveau Format/ESSAIE1/Stéganographie.ppm"
  95. nomFichierCachee = "/Users/Badr-Eddine_SAHLA/Desktop/Informatique Science Numérique/Image/Image Nouveau Format/ESSAIE1/ImageCachée.ppm"
  96.  
  97. FichierCachee = open(nomFichierCachee,'wb')
  98. donnees3,entete3,col3,lig3 = ouverture(nomFichierDestination)
  99.  
  100.  
  101. FichierDestination = open(nomFichierDestination,'rb')
  102. FichierDestination.seek(0,0)
  103.  
  104. ligne1 = FichierDestination.readline()
  105. ligne2a = FichierDestination.readline()
  106. ligne3 = FichierDestination.readline()
  107. ligne4 = FichierDestination.readline()
  108.  
  109.  
  110. ligne3b = "90".encode() + " ".encode() + "320".encode() + "\n".encode()
  111.  
  112.  
  113. enteteCachee = ligne1 + ligne2a + ligne3b + ligne4
  114.  
  115. print(enteteCachee)
  116. FichierCachee.write(enteteCachee)
  117.  
  118.  
  119. k = 0
  120. for i in range(0,len(donnees3),8):
  121.     entier = 0
  122.     liste = []
  123.     for j in range(1,8) :
  124.         data = donnees3[k]
  125.         if data%2 == 0 :
  126.             k+=1
  127.             liste.append(0)
  128.         if data%2 == 1:
  129.             liste.append(1)
  130.             k+=1
  131.     v = 0
  132.    
  133.     for w in liste:
  134.         v+=1
  135.        
  136.         if w*1==1 :
  137.             entier= entier + 2**v
  138.            
  139.     t = (entier).to_bytes(1, byteorder='big')
  140.  
  141.     FichierCachee.write(t)
  142.  
  143. FichierCachee.close()
  144.  
  145.  
  146. for w in liste:
  147.     entier= entier + 2^v
  148.     v+=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement