Interpreter code binaire sous forme d'image ?

Fermé
naixm Messages postés 4 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 26 février 2009 - 26 févr. 2009 à 22:18
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 juil. 2012 à 09:11
Bonjour,

étudiante en graphisme,
je souhaiterais pour un projet d'affiche interpreter du code binaire en image.. je m'explique

je voudrais interpreté du texte en l'occurrence :

"celui qui a vingt ans, a aussi deux cent quarante mois, ou sept mille trois cents jours, ou cent soixante quinze mille heures, ou dix million cinq cent douze mille minutes, ou encore six cent trente million sept cent vingt mille secondes, et deux décennies. "

que j'ai traduit à l'aide d'un site internet, ce qui m'a donné :

01100011 01100101 01101100 01110101 01101001 00100000 01110001 01110101 01101001 00100000 01100001 00100000 01110110 01101001 01101110 01100111 01110100 00100000 01100001 01101110 01110011 00101100 00100000 01100001 00100000 01100001 01110101 01110011 01110011 01101001 00100000 01100100 01100101 01110101 01111000 00100000 01100011 01100101 01101110 01110100 00100000 01110001 01110101 01100001 01110010 01100001 01101110 01110100 01100101 00100000 01101101 01101111 01101001 01110011 00101100 00100000 01101111 01110101 00100000 01110011 01100101 01110000 01110100 00100000 01101101 01101001 01101100 01101100 01100101 00100000 01110100 01110010 01101111 01101001 01110011 00100000 01100011 01100101 01101110 01110100 01110011 00100000 01101010 01101111 01110101 01110010 01110011 00101100 00100000 01101111 01110101 00100000 01100011 01100101 01101110 01110100 00100000 01110011 01101111 01101001 01111000 01100001 01101110 01110100 01100101 00100000 01110001 01110101 01101001 01101110 01111010 01100101 00100000 01101101 01101001 01101100 01101100 01100101 00100000 01101000 01100101 01110101 01110010 01100101 01110011 00101100 00100000 01101111 01110101 00100000 01100100 01101001 01111000 00100000 01101101 01101001 01101100 01101100 01101001 01101111 01101110 00100000 01100011 01101001 01101110 01110001 00100000 01100011 01100101 01101110 01110100 00100000 01100100 01101111 01110101 01111010 01100101 00100000 01101101 01101001 01101100 01101100 01100101 00100000 01101101 01101001 01101110 01110101 01110100 01100101 01110011 00101100 00100000 01101111 01110101 00100000 01100101 01101110 01100011 01101111 01110010 01100101 00100000 01110011 01101001 01111000 00100000 01100011 01100101 01101110 01110100 00100000 01110100 01110010 01100101 01101110 01110100 01100101 00100000 01101101 01101001 01101100 01101100 01101001 01101111 01101110 00100000 01110011 01100101 01110000 01110100 00100000 01100011 01100101 01101110 01110100 00100000 01110110 01101001 01101110 01100111 01110100 00100000 01101101 01101001 01101100 01101100 01100101 00100000 01110011 01100101 01100011 01101111 01101110 01100100 01100101 01110011 00101100 00100000 01100101 01110100 00100000 01100100 01100101 01110101 01111000 00100000 01100100 11101001 01100011 01100101 01101110 01101110 01101001 01100101 01110011 00101110

> 2056 bits

j'ai donc mon code binaire que j'aimerais maintenant retraduire sous forme d'image ( peu importe ce à quoi ça peut ressembler, c'est conceptuel), j'ai cru comprendre que la longueur de ma phrase aller influencer la taille de l'image (plus la phrase traduite est longue, plus j'ai de change d'avoir une grande image), quelle serait alors la taille susceptible d'obtenir avec un tel code ? le fait d'interpreter le code en image noir et blanc, ou niveaux de gris, ou couleur, peut-il faire varier de beaucoup la taille de l'image ?

je ne connais pas grand chose en programmation mais si quelqu'un à la patience de m'expliquer et pense avoir la solution à mon problème, trop chouette !
A voir également:

4 réponses

naruto150589 Messages postés 218 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 5 juin 2011 37
26 févr. 2009 à 23:03
Salut je sait pas si sa a un quelconque rapport mais j'ai trouver sa par hasard:
http://www.developpez.net/forums/d144099/webmasters-developpement-web/asp/creation-image-partir-code-binaire/
0
xvyr Messages postés 14 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 22 avril 2009 1
27 févr. 2009 à 01:44
Bonjour,

Le format de l'image (RGB, niveau de gris) influe sur les données de celles ci
Si tu veux l'image la plus grande possible il faut utiliser le format niveaux de gris (grayscale)

Un pixel dans ce format est stockés sous la forme d'un octet (8 bits).
La valeur de cet octet indique la couleur du pixel (0 = noir et 255 = blanc).
Ton exemple de 2056 bits ( = 257 octets) permet donc de faire une image de 257 pixels (environ 16x16 px)

si tu veux faire une image en couleur, un pixel est stocké sur 3 octets (un pour le rouge, un pour le vert et un pour le bleu) donc la taille est divisée par 3.
Pour 2056 bits cela fait donc une image de 85 pixels (environ 9x9 px)

En résumé pour la taille de l'image (en nombre de pixels) :
- en niveau de gris = Nbits/8
- en couleur (RGB) = Nbits/24
Il suffit après de faire la racine carré pour obtenir une taille du type HxL pixels
0
il me semble que l'image la plus grande possible serait plutôt une "bitmap", c'est à dire une image pour laquelle chaque pixel est soit noir, soit blanc suivant la valeur 0 ou 1 du bit.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 févr. 2009 à 08:55
Salut.
Bon, partons du principe que chaque lettre correspond à un pixel. La taille de ton image sera de la longueur de te chaine. Bien sur, une image c'est plutôt un tableau, il faut donc segmenter ton image, j'y reviendrais plus tard.
Avec quoi compte tu faire ça ? Je te conseil octave (ou matlab si tu l'as sous la main).
La procédure avec octave (En c ou autre c'est à peu près la même, seul les subtilité de langue change) c'est de commencer à lire ton texte. Tu prends ton fichier .txt, et tu lui dit de l'ouvrir en binaire. Ensuite tu lis les données en les stockant dans un tableau, tu lis des données de taille 1 octet.
Tu as maintenant ton tableau 1D, il faut le scinder pour avoir une image. Si la taille est un nombre premier, tu es obligé de bidouiller (c'est le cas le plus contraignant, on peut donc le prendre par défaut).
Tu peux par exemple prendre la racine carré et scinder ainsi. Ensuite pour ce qui restera soit tu rajoute des espaces soit tu tronque de manière à avoir ce qu'il faut. à toi de voir.
Tu as maintenant un tableau 2D d'entier. Ces entiers ont des valeurs entre 32 et 122 (cf. table ascii)
Sous octave (ou matlab) il y a la fonction imagesc(), si Im est le tableau 2D de tes images, il suffit de faire :
imagesc(Im);
et il t'affichera ton image comme il faut, c'est à dire que le noir sera la valeur la plus faible et le blanc la plus élevée.
Voilà le principe général, si tu donne plus de détails techniques, je pourrai t'en dire plus.
Ensuite, bien sur, tu peux varié les interprétations : grouper les lettres par 3 pour avoir du RVB, ignorer espaces majuscule et ponctuation pour avoir une image plus "lisse" etc.
Je suis curieux de voir ce que ça donne.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
19 juil. 2012 à 09:11
je reviens sur ce vieux truc. J'ai téléchargé un texte de Verne "autour de la lune" sur Gutenberg, donc assez long.
j'ai tapé le code suivant sous octave :
fs=fopen("autourlune.txt","rb");
txt=fread(fs);% par défaut lit tout le fichier sous forme de uchar
size(txt,1) %% donne la taille pour l'image
ima=reshape(txt(1:361200,600,602); %% je transforme le vecteur du texte en matrice
colormap(bone(256));
imagesc(mod(ima+101,256))

101 est le code du "e", lettre normalement la plus présente dans un texte. La fonction avec le modulo me permet alors d'avoir une espèce de fond blanc. C'est un choix. Le résultat n'est franchement pas terrible.
étape suivante : faire un son à partir du texte, ça peut être rigolo aussi.
0