Voila je poste ceci suite a la proposition que j'avais fait dans le topic sur le même sujet mais en Java.
Pour pouvoir le faire fonctionner il vous faut Pil (Python Image Library)
Sa s'installe en trois clics de souris.
Pour ceux qui ne sont pas encore au courant voila la version 2.6 de Python sortie il y a 1 semaine :
Python 2.6:
[url=http://www.python.org/ftp/python/2.6/Python-2.6.tgz]Python 2.6 compressed source tarball (for Linux, Unix or OS X)[/url]
[url=http://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2]Python 2.6 bzipped source tarball (for Linux, Unix or OS X, more compressed)[/url]
[url=http://www.python.org/ftp/python/2.6/python-2.6.msi]Python 2.6 Windows installer (Windows binary)[/url]
(Avant d'installer la nouvelle version désinstaller la précédente !!!!!!!! )
Pil 1.1.6 :
[url=http://effbot.org/downloads/Imaging-1.1.6.tar.gz]Python Imaging Library 1.1.6 Source Kit (all platforms)[/url]
[url=http://effbot.org/downloads/PIL-1.1.6.win32-py2.5.exel]Python Imaging Library 1.1.6 for Python 2.5 (Windows only)[/url]
[url=http://effbot.org/downloads/PIL-1.1.6.win32-py2.6.exe]Python Imaging Library 1.1.6 for Python 2.6 (Windows only)[/url]
Si vous posedez déja python et/ou Pil il n'est pas nécessaire de les réinstaller.
Voici le script :
PS : Je l'ai fait a la bourrin, il fonctionne, mais si vous voulez l'inclure dans un autre programme il faudras le remodeller pas mal
[code:1:8f16424fa3]
#Importation de modules
import Image
import os
#Initialisation des variables
global dat, pixel, liste_pixel
x,y, xmax, ymax, c,temp,s= 0, 0, 100, 30, 0,0,''
liste_pixel=[]
liste_ascii=[]
liste_morse=[]
morse=''
#Detection des pixells en fonction du code RVB du pixell
def read_line():
global x, y, xmax, ymax, morse
while (x<xmax):
pixel=dat[x,y]
if (pixel>(200,200,200)):
liste_pixel.append((x,y))
morse=morse+'0'
if (pixel<(200,200,200)):
morse=morse+'1'
x=x+1
x=0
if (y<ymax):
y=y+1
#Ouverture de l'image et appel de la fonction de lecture
im = Image.open("image.jpg")
dat=im.load()
while (y<ymax):
read_line()
c=c+1
#Créé une liste contenant les valeurs des espaces entres chaques pixell blanc
c=0
while (c<len(morse)):
if (morse[c]=="1"):
temp=temp+1
c=c+1
else:
liste_ascii.append(temp)
temp=0
c=c+1
#Converti la distance entre chaque pixell blanc par un symbole
c=0
while (c<len(liste_ascii)):
if (liste_ascii[c]==31):
#liste_morse.append(s)
c=c+1
s=s+"/"
elif (liste_ascii[c]==44):
s=s+"-"
c=c+1
elif (liste_ascii[c]==45):
s=s+"."
c=c+1
else :
print liste_ascii[c]
print "Couleur inconnue"
c=c+1
#Affiche le resultat
print s
[/code:1:8f16424fa3]
Pour l'utiliser avec un autre format, il suffit d'ouvrir le fichier en question avec paint, de l'enregistré en jpeg. L'image doit avoir comme nom : "image.jpg"
Ce script permet de directement trouver la reponse a un challenge, mais ce n'tes pas pour cela que je l'ai posté et je vous fait confiance, vous êtes assez grand que pour ne pas "tricher".
Bonne chance !
.