FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Immortaliser les photos de famille
par Jean Claude Hier à 21:24

» Concours de Morpions
par jjn4 Hier à 16:34

» Tout est tranquille
par Jean Claude Ven 22 Sep 2017 - 21:41

» Texte en gif animé
par JL35 Ven 22 Sep 2017 - 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Affichage de photos

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5951
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Affichage de photos   Mer 6 Aoû 2014 - 17:39

Il va y avoir plein de photos à afficher au retour des vacances, alors...

L'écran est utilisé au maximum de sa capacité, tout le reste est masqué.
Le programme affiche une planche de vignettes (de dimensions choisies), on clique sur une de ces vignettes pour démarrer l'affichage des images, puis on clique 'Suivant' à chaque fois (ou 'Précédent'), soit on passe en automatique (touche 'Auto', original...), genre diaporama, avec délai réglable.
Bouton aide ('?') pour plus de détails, mais c'est tout simple.
La seule ressource externe nécessaire est IrfanView (encore lui), dont il faut ajuster le chemin en tête du programme.
Le programme n'est pas très long (moins de 300 lignes).
Code:

' Affichage de photos en grand format
LABEL Quit, Quitv, Chr, Calcol, Chrs, Afvi, Suivi, Clicki, Clicks, Precede, Suivant
LABEL Fclick, Auto, Rot90d, Aidsuc
DIM w0,h0,wr,hr,wv,hv,ht,eh,nc,nr,x,y,i%,j%,k%,kv%,ik%,a$,f$,r$,ni%,iv$,wi,hi,rc$
DIM aut%,del%,pa%

iv$ = "C:\Progra~2\Irfanv~1\i_view32.exe ": ' <<<<<<<<<<<<<<<<< IrfanView <<<<<<

w0 = SCREEN_X: h0 = SCREEN_Y
wr = w0-100: hr = 20
HIDE 0: WIDTH 0,w0: HEIGHT 0,h0: BORDER_HIDE 0: FONT_NAME 0,"Arial"
BUTTON 1: TOP 1,0: LEFT 1,w0-90: HEIGHT 1,20: CAPTION 1,"Retour": FONT_BOLD 1
ON_CLICK 1,Quitv
CONTAINER 2: TOP 2,0: LEFT 2,0: WIDTH 2,wr: HEIGHT 2,hr
COLOR 2,255,255,190
ALPHA 3: PARENT 3,2: TOP 3,0: LEFT 3,5: FONT_SIZE 3,12: FONT_BOLD 3
ALPHA 4: PARENT 4,2: TOP 4,0: LEFT 4,(w0-300)/2: FONT_SIZE 4,12: FONT_BOLD 4: font_color 4,164,0,164
CAPTION 4,"Cliquez une vignette pour voir l'image"

MEMO 10: HIDE 10

IMAGE 19
' Picture d'affichage des vignettes
PICTURE 20: TOP 20,hr: WIDTH 20,w0: HEIGHT 20,h0-hr
FONT_NAME 20,"Courier New": FONT_SIZE 20,7
ON_CLICK 20,Clicki
BUTTON 21: TOP 21,TOP(20)+HEIGHT(20)-30: LEFT 21,w0-80: CAPTION 21,"Suite": HIDE 21
FONT_BOLD 21: FONT_SIZE 21,12: ON_CLICK 21,Suivi

FORM 50: TOP 50,200: LEFT 50,w0/2-150: WIDTH 50,300: HEIGHT 50,200: COLOR 50,255,164,90
BORDER_SMALL 50: FONT_NAME 50,"Arial": FONT_BOLD 50: ON_CLOSE 50,Quit
CAPTION 50,"- VISUALISATION  DE  PHOTOS  PLEIN  ÉCRAN -"
ALPHA 51: PARENT 51,50: LEFT 51,5: TOP 51,5: CAPTION 51," Répertoire des images (clic) : "
COLOR 51,255,255,0
EDIT 52: PARENT 52,50: TOP 52,20: LEFT 52,5: WIDTH 52,WIDTH(50)-25: ON_CLICK 52,Chr
BUTTON 53: PARENT 53,50: TOP 53,TOP(52)+95: LEFT 53,WIDTH(52)/2-70: WIDTH 53,140
CAPTION 53,"Voir les vignettes": ON_CLICK 53,Chrs
ALPHA 62: PARENT 62,50: TOP 62,TOP(53)+25: LEFT 62,20
CAPTION 62,"(puis cliquer une vignette pour voir l'image)"
BUTTON 54: PARENT 54,50: TOP 54,0: LEFT 54,WIDTH(50)-70: WIDTH 54,50: HEIGHT 54,19
CAPTION 54,"Quitter": ON_CLICK 54,Quit
OPEN_DIALOG 55
BUTTON 61: PARENT 61,50: TOP 61,TOP(54): LEFT 61,LEFT(54)-25: WIDTH 61,25: HEIGHT 61,19
CAPTION 61,"?": ON_CLICK 61,Aidsuc
ALPHA 60: PARENT 60,50: TOP 60,TOP(52)+23: LEFT 60,30: COLOR 60,255,190,164
ALPHA 56: PARENT 56,50: TOP 56,TOP(52)+48: LEFT 56,30
CAPTION 56,"Vignettes de                  x              pixels."
SPIN 57: PARENT 57,50: TOP 57,TOP(56)-3: LEFT 57,LEFT(56)+75: WIDTH 57,50
EDIT 58: PARENT 58,50: TOP 58,TOP(57): LEFT 58,LEFT(57)+WIDTH(57)+12: WIDTH 58,33
ALPHA 59: PARENT 59,50: TOP 59,TOP(56)+25: LEFT 59,20: COLOR 59,255,190,164
' Affichage d'une image
wi = 1280: hi = wi*3/4
hi = SCREEN_Y-80: wi = 4*hi/3
FORM 100: TOP 100,(SCREEN_Y-hi-60)/2: LEFT 100,(SCREEN_X-wi)/2: WIDTH 100,wi+16: HEIGHT 100,hi+60
BORDER_SMALL 100: HIDE 100: COLOR 100,255,0,0: FONT_BOLD 100: FONT_SIZE 100,10
ON_CLOSE 100,Fclick
PICTURE 101: PARENT 101,100: WIDTH 101,wi: HEIGHT 101,hi: STRETCH_ON 101
ON_CLICK 101,Suivant
BUTTON 102: PARENT 102,100: TOP 102,TOP(101)+HEIGHT(101): LEFT 102,wi-300
WIDTH 102,95: CAPTION 102,"Précédente": ON_CLICK 102,Precede
BUTTON 103: PARENT 103,100: TOP 103,TOP(102): LEFT 103,LEFT(102)+100
WIDTH 103,95: CAPTION 103,"Suivante": ON_CLICK 103,Suivant
BUTTON 104: PARENT 104,100: TOP 104,TOP(102): LEFT 104,LEFT(103)+100
WIDTH 104,95: CAPTION 104,"Quitter": ON_CLICK 104,Fclick
EDIT 105: PARENT 105,100: TOP 105,TOP(102)+1: LEFT 105,10: WIDTH 105,420
BUTTON 106: PARENT 106,100: TOP 106,TOP(102): LEFT 106,wi/2-40: WIDTH 106,40
CAPTION 106,"Auto": ON_CLICK 106,Auto
SPIN 107: PARENT 107,100: TOP 107,TOP(106): LEFT 107,wi/2: WIDTH 107,40
POSITION 107,2
ALPHA 108: PARENT 108,100: TOP 108,TOP(107)+3: LEFT 108,LEFT(107)+40
CAPTION 108,"sec.": COLOR 108,255,180,180
BUTTON 110: PARENT 110,100: TOP 110,TOP(102): LEFT 110,LEFT(102)-30: WIDTH 110,28
FONT_NAME 110,"Wingdings 3": FONT_SIZE 110,14: CAPTION 110,CHR$(80): ON_CLICK 110,Rot90d

del% = 2000: ' intervalle entre images en automatique (millisecondes)
wv = 160: hv = wv*3/4: ' dimensions des vignettes, à ajuster, au choix
POSITION 57,wv: TEXT 58,STR$(hv)
ON_CHANGE 57,Calcol
ht = 9: ' hauteur texte (légendes)
eh = 1: ' espacement horizontal entre vignettes
GOSUB Calcol
TO_FOREGROUND 50
END
' ==============================================================================
Quit:
TERMINATE
' ==============================================================================
Quitv:
' Retour à l'écran d'accueil
HIDE 0: CLS: SHOW 50: TO_FOREGROUND 50
RETURN
' ==============================================================================
Chr:
' Choix du répertoire des images
CAPTION 60,""
a$ = FILE_NAME$(55): IF LEN(a$)<4 THEN RETURN
r$ = FILE_EXTRACT_PATH$(a$)
TEXT 52,r$
IF DIR_EXISTS(r$) = 0 THEN MESSAGE "Répertoire non trouvé !": RETURN
Dir(r$+"*.jpg","/B"): CLEAR 10: CLIPBOARD_PASTE 10
ni% = COUNT(10)
CAPTION 60," (= "+STR$(ni%)+" images) "
pa% = 1: ' 1ère vignette à afficher
RETURN
' ==============================================================================
Calcol:
' Rangées/Colonnes en fonction de la dimension choisie des vignettes
wv = POSITION(57): hv = INT(wv*3/4): ' dimensions des vignettes, à ajuster, au choix
TEXT 58,STR$(hv)
nc = INT(w0/(wv+eh)): ' -> nombre de colonnes calculé
nr = INT((h0-hr)/(hv+ht)): ' -> nombre de rangées calculé
CAPTION 59,"=> "+STR$(nr)+" rangées de "+STR$(nc)+" colonnes, soit "+STR$(nc*nr)+" images."
RETURN
' ==============================================================================
Chrs:
' Affichage des vignettes (dans la limite de la capacité de l'écran)
r$ = TEXT$(52)
IF DIR_EXISTS(r$) = 0 THEN MESSAGE "Répertoire non trouvé !": CAPTION 60,"": RETURN
CAPTION 3,r$ + "  ("+STR$(ni%)+" images)"
SHOW 0
HIDE 50
pa% = 1: GOSUB Afvi
RETURN
' ==============================================================================
Afvi:
2D_TARGET_IS 20: PRINT_TARGET_IS 20: CLS: COLOR 20,200,200,200
HIDE 21
x = 0: y = 0
FOR kv% = pa% TO ni%
    a$ = ITEM_READ$(10,kv%): f$ = r$ + a$
    EXECUTE_WAIT iv$+f$+" /resize=("+STR$(wv)+",0) /aspectratio /clipcopy /killmesoftly": ' redim
    CLIPBOARD_PASTE 19
    2D_IMAGE_PASTE 19,x,y
    PRINT_LOCATE x,y+hv-1: PRINT STR$(kv%)+": "+a$
    x = x+wv+eh
    IF x>(w0-wv)
        x = 0: y = y+hv+ht
        IF y>(HEIGHT(0)-hv-ht)
            IF kv% < ni%
                SHOW 21
            END_IF
            EXIT_FOR
        END_IF
    END_IF
NEXT kv%
RETURN
' ==============================================================================
Suivi:
' planche de vignettes suivante
pa% = kv%+1
GOSUB Afvi
RETURN
' ==============================================================================
Clicki:
' Affichage d'une image (cliquée, ou en continu)
x = MOUSE_X_LEFT_DOWN(20): y = MOUSE_Y_LEFT_DOWN(20)
x = 1+INT(x/(wv+eh)): ' colonne cliquée
y = 1+INT(y/(hv+ht)): ' rangée cliquée
ik% = (y-1)*nc + x: ' rang de l'image cliquée dans la fenêtre d'affichage
ik% = ik%+pa%-1: ' rang dans la liste globale
Clicks:
a$ = ITEM_READ$(10,ik%)
f$ = r$ + a$
ImgInfos(f$)
' IF rsw%>rsh%
'    WIDTH 101,wi: HEIGHT 101,hi
' ELSE
'    HEIGHT 101,hi: WIDTH 101,hi*rsw%/rsh%
' END_IF
WIDTH 101,wi: HEIGHT 101,hi: ' dimensions implicites
FILE_LOAD 101,f$
SHOW 100: TO_FOREGROUND 100
CAPTION 100,"  -  Répertoire :  "+r$+"  ( "+STR$(ni%)+"  images )"
TEXT 105," "+STR$(ik%)+"_  "+a$+"  -  "+rsd$+"  -  ("+STR$(rsw%)+" x "+STR$(rsh%)+")"
RETURN
' ==============================================================================
Precede:
ik% = ik%-1
IF ik%<1 THEN ik% = 1: RETURN
GOSUB Clicks
RETURN
' ==============================================================================
Suivant:
ik% = ik%+1
IF ik% > ni%
    aut% = 0
ELSE
    GOSUB Clicks
    WHILE aut% = 1: ' défilement auto
        del% = 1000*POSITION(107)
        del% = del%-500: ' pour tenir compte du temps de traitement (approx.)
        FOR i% = 1 TO del% STEP 200
            WAIT 200
            IF CLICKED(106) = 1 THEN EXIT_WHILE
        NEXT i%
        ik% = ik%+1: IF ik% > ni% OR aut% = 0 THEN EXIT_WHILE
        GOSUB Clicks
    END_WHILE
    aut% = 0
    CAPTION 106,"Auto"
END_IF
RETURN
' ==============================================================================
Fclick:
' Retour à l'écran des vignettes
HIDE 100
aut% = 0: CAPTION 106,"Auto"
RETURN
' ==============================================================================
Auto:
IF aut% = 1
    aut% = 0: ' touche Stop
    CAPTION 106,"Auto"
ELSE
    ' touche Auto
    IF CLICKED(106) = 1: ' pour désarmorçer le dernier click
    END_IF
    aut% = 1
    CAPTION 106,"Stop"
    GOSUB Suivant
END_IF
RETURN
' ==============================================================================
Rot90d:
' Rotation à droite 90° de l'image affichée
CLIPBOARD_COPY 101
i% = WIDTH(101): j% = HEIGHT(101)
EXECUTE_WAIT iv$ + "/clippaste /rotate_r /clipcopy /killmesoftly"
IF i% > hi
    HEIGHT 101,hi: WIDTH 101,hi*j%/i%: IF WIDTH(101)>wi THEN WIDTH 101,wi
ELSE
    WIDTH 101,wi: HEIGHT 101,wi*i%/j%: IF HEIGHT(101)>hi THEN HEIGHT 101,hi
END_IF
CLIPBOARD_PASTE 101
RETURN
' ==============================================================================
Aidsuc:
rc$ = CHR$(13)+CHR$(10)
a$ = "      - VISUALISATION  DE  PHOTOS  EN  PLEIN  ÉCRAN -"+rc$+rc$
a$=a$+"- Clic pour choisir le répertoire des images à visualiser."+rc$
a$=a$+"- Choisir la largeur des vignettes à afficher, ce qui conditionnera"+rc$
a$=a$+"  le nombre total de miniatures affichées à l'écran."+rc$
a$=a$+"- Cliquer 'Voir les vignettes': elles s'affichent en plein écran, dans"+rc$
a$=a$+"  la limite de la capacité de l'écran. Cliquer sur le bouton 'Suite'"+rc$
a$=a$+"  éventuel en bas à droite pour voir la série suivante."+rc$
a$=a$+"- Cliquer sur une vignette pour voir l'image en grand format."+rc$+rc$
a$=a$+"  On peut alors :"+rc$
a$=a$+"  - cliquer 'Suivante', 'Précédente', ou bien 'Quitter' pour revenir"+rc$
a$=a$+"      à l'affichage global."+rc$
a$=a$+"  - cliquer 'Auto' pour un affichage en continu des images"+rc$
a$=a$+"      successives à partir de l'image affichée, avec réglage du"+rc$
a$=a$+"      délai en secondes."+rc$
a$=a$+"      Cet affichage continu est interruptible par la touche 'Stop'"+rc$
a$=a$+"      (retour à l'affichage image par image)."+rc$+rc$
a$=a$+"  NB: on peut faire pivoter de 90° à droite une image affichée à"+rc$
a$=a$+"      l'écran à l'aide du bouton flèche circulaire."+rc$+rc$
a$=a$+" Retour à l'écran d'origine : touche 'Retour' en haut à droite"+rc$
a$=a$+" de l'écran des vignettes."+rc$
a$=a$+" Fermer le programme: touche 'Quitter'"
MESSAGE a$
RETURN
' ==============================================================================
SUB Dir(rep$, arg$)
' Liste des fichiers du répertoire rep$, options arg$, résultat -> CLIPBOARD
' (à coller par exemple dans un Memo). Exécution sans fenêtre noire.
' Arguments optionnels:
'    /A:D répertoires, /A:-D fichiers, /B format abrégé"
'    /-C pas de séparateur de milliers, /-N fichiers à gauche (abrégés)
'    /O: (tri) N tri alpha, E tri par extension, G répertoires en tête,
'        S tri par taille, D tri par date croissante (-D date décroissante)
'    /S y compris sous-répertoires, /X avec noms abrégés.
DIM_LOCAL prg_a$, s_cr$, b_at$
prg_a$ = "CMD.exe /c DIR " + rep$ + " " + arg$ + " | clip"
s_cr$ = "C:\TEMP\Vbscript.vbs": b_at$ = "C:\TEMP\Bat.bat"
FILE_OPEN_WRITE 9, b_at$: FILE_WRITELN 9, prg_a$: FILE_CLOSE 9: ' Fichier .bat
prg_a$ = "CreateObject(" + CHR$(34) + "Wscript.Shell" + CHR$(34) + ").Run "
prg_a$ = prg_a$ + CHR$(34) + b_at$ + CHR$(34) + ",0,True"
FILE_OPEN_WRITE 9, s_cr$: FILE_WRITELN 9, prg_a$: FILE_CLOSE 9: ' script vbs
EXECUTE_WAIT "WSCRIPT.exe " + s_cr$: ' Exécution du script
FILE_DELETE b_at$: FILE_DELETE s_cr$
END_SUB
' ==============================================================================
SUB ImgInfos(f$)
' Image f$ -> rsw%, rsh%, rsd$ (dimensions, date/heure de prise de vue)
DIM_LOCAL a$, fi$: ' variables locales
IF VARIABLE("rsw%") = 0 THEN DIM rsw%
IF VARIABLE("rsh%") = 0 THEN DIM rsh%
IF VARIABLE("rsd$") = 0 THEN DIM rsd$
fi$ = "C:\TEMP\Ifxwz.txt"
EXECUTE_WAIT iv$ + f$ + " /info=" + fi$ + " /fullinfo"
FILE_OPEN_READ 9, fi$
WHILE FILE_EOF(9) = 0: FILE_READLN 9, a$
    IF LEFT$(a$, 16) = "Image dimensions"
        a$ = MID$(a$, 20, 50)
        rsw% = VAL(LEFT$(a$, INSTR(a$, " ") - 1))
        a$ = MID$(a$, INSTR(a$, " ") + 3, 50)
        rsh% = VAL(LEFT$(a$, INSTR(a$, " ") - 1))
    ELSE
        IF LEFT$(a$, 16) = "DateTimeOriginal"
            a$ = MID$(a$, 20, 50)
            rsd$ = MID$(a$,9,2)+"/"+MID$(a$,6,2)+"/"+LEFT$(a$,4)+MID$(a$,11,6)
            EXIT_WHILE
        END_IF
    END_IF
END_WHILE
FILE_CLOSE 9: FILE_DELETE fi$
END_SUB
' ==============================================================================
Je suis parti du principe que les dimensions des images étaient dans le rapport 4/3, ce qui est le cas dans la grande majorité des apn, il faudrait ajuster si ce n'était pas le cas (ce n'est pas automatisé).

PS déjà une petite modif: on peut afficher successivement la totalité des imagettes, une série par écran.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
Affichage de photos
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Galerie] Affichage des photos à l'aide d'une Visionneuse
» problème d'affichage de photos dans mon forum
» Lenteur d'affichage des photos
» Pb avec affichage des photos et smileys sous firefox
» Lenteur d'affichage des photos

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: