Bonjour,
Dans le cadre d'un projet de stéganographie, je dois utiliser le module PIL, cependant je ne trouve pas la version compatible avec python 3. Faut-il que je repasse à python 2 ? Ou y'a t-il une autre solution ?
Merci de votre aide.
Version imprimable
Bonjour,
Dans le cadre d'un projet de stéganographie, je dois utiliser le module PIL, cependant je ne trouve pas la version compatible avec python 3. Faut-il que je repasse à python 2 ? Ou y'a t-il une autre solution ?
Merci de votre aide.
Salut,
Pour le peu que je m'en suis servi, il ne me semble pas qu'il y ait eu de mise à jour pour Python 3.x, du moins pas officiellement.
Par contre il y a un fork: Pillow, compatible Python 3.x
Salut,
Merci, ça fonctionne pour le module. J'ai, cependant un problème avec le code... Dois-je créer un nouveau sujet, où rester sur celui-ci ?
Si c'est toujours ton pb de stéganographie avec Python3/Pillow, je suppose que tu peux continuer ici.
Très bien !
Ce que je dois faire :Il s'agit de récupérer chaque bits de poids faible d'un pixel (un pixel étant constitué des composantes r, g et b) pour obtenir un binaire final afin d'avoir un mot de passe. L'image est au format BMP.
Voici mon code :
Ce qui me retourne une liste de caractères.. Mais ce n'est pas ce à quoi je m'attendais. Je pensais avoir une phrase parfaitement intelligible. De deux choses l'une : Soit il y a une coquille dans mon code, soit j'ai omis quelque chose ayant un rapport avec le format BMP.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from PIL import Image # Module Image Python 'Imaging Library' pour charger et effectuer des opérations sur une image. img = Image.open('stega.bmp') # On ouvre l'image. width, height = img.size # On récupère la taille de l'image en largeur et longueur. binary_string = "" # Stockera notre chaîne binaire récupérée. Pour l'instant vide. lsb_extracted = "" # Stockera notre lsb récupéré. Pour l'instant vide. text = "" # Stockera notre texte récupéré. Pour l'instant vide. # On parcourt les pixels de notre image de x en y. for x in range(width): for y in range(height): r, g, b = img.getpixel((x, y)) # Récupération des valeurs ASCII des composantes r, g et b. r = str(bin(r)[2:]).zfill(8) # Conversion de la composante r décimale en binaire. g = str(bin(g)[2:]).zfill(8) # Conversion de la composante g décimale en binaire. b = str(bin(b)[2:]).zfill(8) # Conversion de la composante b décimale en binaire. binary_string += r[-1] # Récupération du bit de poids le plus faible de la composante r binary_string += g[-1] # Même chose binary_string += b[-1] # Même chose lsb_extracted = str([chr(int(binary_string[i:i+8], 2)) for i in range(0, len(binary_string), 8)]) # Conversion binaire par groupe de 8 bits vers décimale. Puis conversion en caractère depuis leur nombre en ASCII, et l'ajoute au texte. text = lsb_extracted print(text)
Merci de votre aide.