Bonjours à tous.

J'ai fait un petit serveur web en python.

Une des parties du serveur me sert à explorer l'arborescence locale. j'ai fait un petit script qui permet de "resizer" les images en miniature (128x128) pour afficher des aperçus des images de manière légère à s'afficher.
les miniatures se créent bien, et sont stockée dans un dossier tmp.
le soucis c'est que lorsque je les appel (en boucle dans un tableau html), elles ne s'affiche pas dans le bonne ordre: elle sont décalées.

par exemple si la l'image1 ne se charge pas dans la case1, alors elle se charge dans la case2 au lieu d'y laisser l'image2, et toutes les images sont décalée par la suite.

le code commence à prendre un petit peu de place, je vais donc le réduire:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# -*- coding: cp1252 -*-
from PIL import Image
import os, time
 
class Html():
    def __init__(self):
        self.secureuser = "off"
        self.path = 'c:/'
        self.file_path=""
        self.variables = {"var": "init"}
 
    def resized_img(self, filepath):
        size=128,128
        img = Image.open(filepath)
        img.thumbnail(size, Image.ANTIALIAS)
        tmpfile_path = "./tmp/"
        tmpfile_path += os.path.basename(filepath)
        tmpfile_path += ".tmp"
        try:
            img.save(tmpfile_path, "JPEG")
        except:
            img.save(tmpfile_path, "GIF")
        img.close()
        return True
 
    def filetype(self, this_file):
        #retourne le type de fichier
 
    def pages(self, req):       
        if req.count("?") > 0:
            #ici du code qui permet de récupérer les variables GET (self.variables={var:value})
        else:
            page = req
 
        ##Pour voir les dossiers:
        elif page == "/listdir":
 
            if self.variables.has_key("path"):
                #ici on récupère la variable path (c:/ par default)
 
#############################################
########Préchargement des miniatures#########
#############################################
 
            for image in os.listdir(self.path):
                if os.path.isfile(self.path+image):
                    if str(self.filetype(self.path+image)) == "Image":
                        if not os.path.exists("./tmp/"+os.path.basename(self.path+image)+".tmp"):
                            print "Not exist: "+"./tmp/"+os.path.basename(self.path+image)+".tmp"
                            self.resized_img(self.path+image)
                            time.sleep(1)
#############################################
            result = " "
            #on liste les dossier en premier (osef, ça marche)
            for this_dir in os.listdir(self.path):
                if os.path.isdir(self.path+this_dir):
                    result+="\t\t<tr><td><a href='/listdir?path="+self.path+this_dir+"'>"+this_dir+"</a></td></tr>\n"
 
            #Ici les fichier (dont les images)    
            for this_file in os.listdir(self.path):
                if os.path.isfile(self.path+this_file):
                    result+="\t\t<tr><td><a href='/file?path="+self.path+this_file+"'>"+this_file+"</a></td><td>"+str(os.path.getsize(self.path+this_file))+"</td><td>"+str(self.filetype(self.path+this_file))+"</td>"
                    result+="<td>"
                    if str(self.filetype(self.path+this_file)) == "Image":
                        result+="""<img src="file_miniimg_"""+this_file+""""/>"""
                    else:
                        result+="."
                    result+="</td></tr>\n"
            result +="\t</table></td></tr>\n</table>\n"
            result += """<!- -End List Directory -->\n"""
            return result
 
        ##Pour lire la mini-image
        elif "/file_miniimg_" in page:
            imgfile = ("./tmp/"+page[14:len(page)]+".tmp").replace("%20", " ")
            image = open(imgfile, "rb")
            result = image.read()
            image.close()
            return result
un petit screen pour que vous compreniez mieux mon soucis:

je tiens a préciser que:
1]les miniatures sont bien crée avant l'affichage html
2]la source html est correct, et que les images devraient s'afficher correctement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<tr><td><a href="/file?path=[CHEMIN-ok]/There%20is%20always%20hope.jpg">There is always hope.jpg</a></td> [...] <td><img src="file_miniimg_There%20is%20always%20hope.jpg"></td></tr>
<tr><td><a href="/file?path=[CHEMIN-ok]/Stonegarden.jpg">Stonegarden.jpg</a> [...] <td><img src="file_miniimg_Stonegarden.jpg"></td></tr>
Si quelqu'un à une idée pour remedier au problème, se serrait avec plaisir
Si vous avez besoin d'autres infos, bout de code pour pouvoir m'aider, il suffis de demander
Merci d'avance