#!/usr/bin/python from string import find from sys import argv from commands import getstatusoutput entetes = [("GIF8",0,"giftopnm","gif"), ("PNG",1,"pngtopnm","png"), ("JFIF",6,"djpeg","jpg")] fichier = "fichier.proprio" if len(argv)>1: fichier = argv[1] fh = open(filepath ) dat = fh.read() fh.close() inum = 0 for kw,off,conv,ext in entetes: x = -1 while 1: x = find(dat,kw,x+1) if x<0: break deb = x - off #candidat image localisé -- cherche la fin par découpe binaire s1 = len(dat) - x s0 = 1 sz = s1 while s0/dev/null" % (deb + 1, fichier, sz, conv)) if stat: #echec -- candidat probablement trop petit if sz == s1: #echec -- candidat trop petit print "Echec... pas d'image" break elif sz == s0: #longueur trouvée -- écriture de l'image nomimage = "image%03d.%s" % (inum, ext) print "écriture",nomimage fh = open( nomimage, "w") fh.write(dat[deb :deb+s1]) fh.close() inum = inum + 1 break s0 = sz else: #semble trop gros -- essaie de réduire s1 = sz sz = int((s0+s1)/2)