Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Visualiseur de photos dans une archive ZIP Mar 24 Aoû 2010 - 10:51 | |
| J'ai fait un petit programme de visualisation de photos. Rien de bien passionnant, juste quelques petites particularités: - les photos sont dans une archive zip (dossier compressé) - TOUTES les photos sont chargées au départ dans de petites vignettes dont une bande type pellicule est visible à gauche de l'écran - des boutons de défilement permettent de faire défiler cette bande - in clic sur une vignette affiche la photo en grand ainsi que son nom Les opérations ZIP sont faites par 7zip (la version ligne de commandes nomée 7z.exe). C'est un programme freeware et le lien de téléchargement est dans les commentaires du source. Pour essayer, il faut créer un fichier zip contenant les photos, donner son nom dans la variable container$ documentée dans le source, éventuellement télécharger et installer 7zip, et c'est tout. Voici le programme: - Code:
-
' piclib.bas ' ' Ce programme est un exemple de visualiseur d'images à partir d'un fichier ZIP. ' On utilise 7zip pour la gestion de l'archive. C'est un freeware téléchargeable ici: ' http://www.7-zip.org/download.html ' Pour l'exécution, placéz une copie de 7z.exe dans le répertoire de piclib.bas, ' ou adaptez la ligne de commande. ' ' Le programme affiche des vignettes de toutes les images contenues dans le fichier ' ZIP dont le nom est défini par la variable container$ (actuellement "pics"). Il ' utilise 7z.exe pour lire le fichier zip, en extraire les images et les placer ' dans les vignettes. On affiche 16 vignettes sur une bande type "pellicule". Les ' autres vignettes sont créées, mais invisibles. Les boutons de flèches, de haut ' en bas, signifient "Première image", "image suivante","image précédente" et ' dernière image. La pellicule défine en avançant et en reculant. Un click sur une ' vignette affiche l'image en grand, avev son nom en-dessous. Attendre la fin du ' chargement avant de cliquer sur une vignette ou un bouton. ' ' Le programme utilise un répertoire temporaire dont le nom est dans tempdir$. Ce ' répertoire sera créé au début et supprimé automatiquement à la fin du programme.
label click_picture, finish, execute_cmd label jump_first, jump_prev, jump_next, jump_last
dim i%, n_pics%, liste_pics$(100), lig$, cmd$, t%, aff_base%, aff_nombre% dim container$, zipfile$, listfile$, batfile$, tempdir$
container$ = "pics" zipfile$ = container$ + ".zip" listfile$ = container$ + ".lst" batfile$ = container$ + ".bat" tempdir$ = container$+"_temp"
on_close 0,finish
height 0,680
alpha 30 : top 30,30 : left 30,140 : caption 30,"Chargement en cours..."
cmd$ = "7z l "+zipfile$+" > "+listfile$ gosub execute_cmd file_open_read 2,listfile$ repeat file_readln 2,lig$ until left$(lig$,1)="-" n_pics% = 0 file_readln 2,lig$ repeat n_pics% = n_pics% + 1 liste_pics$(n_pics%) = right$(lig$,len(lig$)-53) file_readln 2,lig$ until left$(lig$,1)="-" file_close 2
dir_make tempdir$ cmd$ = "7z e "+zipfile$+" -opics_temp * > "+listfile$ gosub execute_cmd
picture 10 : top 10,10 : left 10,10 : height 10,600 : width 10,10+30+10 : color 10,0,0,0 t% = 20 aff_nombre% = 0 for i%=101 to n_pics%+100 if t%>560 then t%=1000 if t%<1000 then aff_nombre% = aff_nombre% + 1 picture i% : stretch_on i% : height i%,30 : width i%,30 : left i%,20 : top i%,t% t% = t% + 35 on_click i%,click_picture file_load i%,tempdir$+""+liste_pics$(i%-100) file_delete tempdir$+""+liste_pics$(i%-100) next i% picture 20 : top 20,20 : left 20,130 : height 20,300 : width 20,300 : stretch_on 20 alpha 21 : top 21,350 : left 21,130 aff_base% = 1
button 1 : top 1,20 : left 1,80 : width 1,30 : height 1,30 : on_click 1,jump_first font_name 1,"Wingdings 3" : font_size 1,16 : caption 1,chr$(135) button 2 : top 2,50 : left 2,80 : width 2,30 : height 2,30 : on_click 2,jump_prev font_name 2,"Wingdings 3" : font_size 2,14 : caption 2,chr$(112) button 3 : top 3,80 : left 3,80 : width 3,30 : height 3,30 : on_click 3,jump_next font_name 3,"Wingdings 3" : font_size 3,16 : caption 3,chr$(113) button 4 : top 4,110 : left 4,80 : width 4,30 : height 4,30 : on_click 4,jump_last font_name 4,"Wingdings 3" : font_size 4,14 : caption 4,chr$(136)
caption 30,""
end
click_picture: file_save number_click,tempdir$+"\x.bmp" file_load 20,tempdir$+"\x.bmp" file_delete tempdir$+"\x.bmp" caption 21,zipfile$+" [ "+liste_pics$(aff_base%+number_click-1-100)+" ]" return finish:
dir_remove tempdir$ return execute_cmd: file_open_write 2,batfile$ file_writeln 2,cmd$ file_writeln 2,"exit" file_close 2 execute_wait batfile$ return jump_first: if aff_base%=1 then return aff_base% = 1 for i%=aff_nombre%+1 to n_pics% top i%+100,1000 next i% for i%=1 to aff_nombre% top i%+100,20+(i%-1)*35 next i% return jump_prev: if aff_base%>1 top aff_base%+aff_nombre%-1+100,1000 for i%=aff_base%+aff_nombre%-2 to aff_base% step -1 top i%+100,top(i%+100)+35 next i% top aff_base%-1+100,20 aff_base% = aff_base% - 1 end_if return jump_next: if aff_base%+aff_nombre%-1<n_pics% top aff_base%+100,-1000 for i%=aff_base%+1 to aff_base%+aff_nombre%-1 top i%+100,top(i%+100)-35 next i% top aff_base%+aff_nombre%+100,top(aff_base%+aff_nombre%-1+100) + 35 aff_base% = aff_base% + 1 end_if return jump_last: if aff_base%<n_pics%-aff_nombre% for i%=1 to n_pics%-aff_base% top i%+100,-1000 next i% for i%=1 to aff_nombre% top n_pics%-aff_nombre%+i%+100,20+(i%-1)*35 next i% aff_base% = n_pics% - aff_nombre% + 1 end_if
return | |
|
Invité Invité
| Sujet: Re: Visualiseur de photos dans une archive ZIP Mar 24 Aoû 2010 - 22:30 | |
| Quand je pourrai prendre des vacances avec mes codes, il faudra vraiment que je regarde de près ce que tu fais. |
|