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.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager