| Fais_moi un diaporama | |
|
+4papydall JL35 Yannick sergeauze 8 participants |
|
Auteur | Message |
---|
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Fais_moi un diaporama Lun 1 Oct 2012 - 19:41 | |
| Salut Beaucoup de photos prises cet été. Je voudrais les voir defiler en boucle dans un coin de mon Bureau Je n'ai pas trouve de code de diaporama sur le blog Ce que j'ai reussi à faire - Code:
-
dim x picture 1 border_hide 0 top 0, 50 left 0, 20 width 0, 594 height 0, 400 width 1, 600 height 1, 400
stretch_on 1 for x=1 to 1000 ' file_load 1, "chemin d'acces du JPG"
if key_down_code =27 then terminate wait 800 file_load 1, "chemin d'acces du JPG" wait 800 next x
stop
C'est la solution de facilite ! Seulement pour quelque s cliches Mon pb :c'est la gestion du chemin acces. trouver les photos et le moyens de les afficher. en formulant (file_load 1, "chemin d'acces du JPG") , autrement. Avez_vous des solutions? Bonne fin de journee | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: Fais_moi un diaporama Lun 1 Oct 2012 - 20:31 | |
| @ Sergeauze,
je ne vois où est ton problème pour trouver tes photos en principe tu sais où tu les as mises.
Mais bon, le mieux est de te créer une arborescence depuis le dossier "Mes Images" . Tu crées un dlist 1 ou tu loges les dossiers présents dans le dossier principal puis tu diriges vers le premier dossier. Ensuite tu peux charger les adresses des photos présentes dans le fichier dans un dlist 2 et finir ta boucle for par count(dlist 2) du coup tu pourras rajouter des photos dans le dossier ou même en enlever sans le risque d'une erreur.
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Lun 1 Oct 2012 - 21:08 | |
| A condition d'avoir un dossier Mes Images et surtout d'avoir ses photos dedans. Si elles sont n'importe où (chez moi par exemple j'ai un dossier 'C:\Photos' avec des sous-dossiers en fonction des dates ou des sujets). Ce que tu peux faire sergeauze: - déclarer un Open_Dialog 100 (enfin, un numéro quelconque d'objet libre) - dans le programme, faire f$ = file_name$(100) qui présente un explorateur de fichiers à l'utilisateur, dans lequel il va choisir un répertoire (cliquer sur une image quelconque du répertoire choisi). - extraire de ce nom de fichier le nom du répertoire: rep$ = File_Extract_Path$(f$)- lister tous les fichiers jpg de ce répertoire dans un List ou un Dlist (par exemple avec Execute_Wait "Cmd.exe /c DIR /B rep$ + "\*.jpg >C:\TEMP\fichdir" et charger le fichier temporaire fichdir dans le List (puis le supprimer).- établir la liste des fichiers .jpg de ce répertoire, un exemple: - Code:
-
LABEL Listphot DIM f$, rep$, srep$
DLIST 10 OPEN_DIALOG 100
GOSUB Listphot print str$(count(10)): ' nombre d'images trouvées END
Listphot: f$ = FILE_NAME$(100) IF LEN(f$) < 4 THEN RETURN: ' pas de répertoire choisi rep$ = FILE_EXTRACT_PATH$(f$): ' extraction du nom du répertoire srep$ = DIR_CURRENT$: ' sauvegarde du répertoire courant DIR_CHANGE rep$: ' on se positionne dans le répertoire choisi f$ = FILE_FIND_FIRST$ WHILE f$ <> "_" IF UPPER$(RIGHT$(f$,3)) = "JPG" THEN ITEM_ADD 10, f$ f$ = FILE_FIND_NEXT$ END_WHILE FILE_FIND_CLOSE DIR_CHANGE srep$: ' restore du répertoire courant RETURN Ensuite tu disposes de la liste de toutes tes photos que tu fais défiler à ta guise, le nom complet de chaque photo étant ici: rep$ + Item_Read$(10, x). Il y a quelques petits aménagements à prévoir, par exemple il est bon d'extraire la taille en pixels des photos pour pouvoir les orienter, la plaie ce sont les photos prises verticalement qui se présentent à 90°, dans ce cas si la hauteur est inférieure à la largeur il faut redimensionner le Picture d'affichage dans le bon sens. Et d'autre petits problèmes qui se présentent au fur et à mesure, mais rien d'insurmontable. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: DES NOUVELLES ???... Mar 2 Oct 2012 - 22:53 | |
| @Sergeauze, Où en es tu ?... Ne restes pas tout seul dans ton coin si tu piétines... | |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Fais_moi un diaporama Mer 3 Oct 2012 - 9:55 | |
| je suis parvenu jusqu'a l'affichage des photos en boucle Mais comme on dit:" science sans conscience ,n'est que ruine de l'ame" Et je m'efforce de comprendre chaque etape de la demarche ,et le role de chaque instruction Il me reste à finaliser l'affichage apres ça | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fais_moi un diaporama Mer 3 Oct 2012 - 12:42 | |
| Bonne continuation Sergeauze! | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fais_moi un diaporama Mer 3 Oct 2012 - 13:41 | |
| @ Sergeauze, Pour t'aider j'ai repris le code de JL35 (sans le modifier) pour y ajouter des commentaires qui permettent de voir ce qui se passe. - Code:
-
' récupération de tout les noms des photos (f$) du répertoire (rep$) ' pour les stocker dans le LIST ou DLIST n°10, pour pouvoir les travailler par la suite ' PAR JL35 (Supplément de commentaires: JEAN CLAUDE)
LABEL Listphot DIM f$:' pour désigner le nom d'une image dim rep$:' pour répertoire dim srep$:' pour sauvegarde du répertoire courant
LIST 10:' mettre un DLIST à place (LIST non visible)
OPEN_DIALOG 100:' déclaration de l'obet OPEN_DIALOG, qui permet de visualiser une ' fenêtre pour choisir le répertoire (dossier) qui contient les photos
GOSUB Listphot:' execute la section de programme (label: Lisphot) jusqu'au RETURN
print str$(count(10)): ' nombre d'images trouvées
END ' ============================================================================== Listphot: f$ = FILE_NAME$(100):' le nom du répertoire choisi par l'utilisateur est stocké dans f$ IF LEN(f$) < 4 THEN RETURN: ' pas de répertoire choisi donc on attend (return)
rep$ = FILE_EXTRACT_PATH$(f$): ' extraction du nom du répertoire caption 0, rep$:' cette ligne te permet de voir rep$ dans le bandeau de la fenêtre (à supprimer si nécessaire)
srep$ = DIR_CURRENT$: ' sauvegarde du répertoire courant ' (permet de de retrouver dans le même répertoire au prochain lancement du programme)
DIR_CHANGE rep$: ' on se positionne dans le répertoire choisi pour extraire les photos
f$ = FILE_FIND_FIRST$:' permet de trouver la première image du répertoire f$
WHILE f$ <> "_":' tant que f$ trouve une image execute le code jusqu'a END_WHILE ' (tant que la condition f$<> "_" est vrai)
IF UPPER$(RIGHT$(f$,3)) = "JPG" THEN ITEM_ADD 10, f$ ' si les 3 derniers caractères de f$, (en majuscules: UPPER$) ' sont "JPG" alors on insere f$ (le nom de l'image) dans le DLIST 10. f$ = FILE_FIND_NEXT$:' permet de continuer la recherche des photos ' qui suivent la précédente trouvée
END_WHILE: ' fin de la boucle WHILE ' (si la condition f$<> "_" n'est plus vrai on sort de la boucle) FILE_FIND_CLOSE:' termine l'action de rcherche des photos ' (vu que la condition WHILE n'est plus vrai)
DIR_CHANGE srep$: ' restore du répertoire courant
RETURN
' ======================== ' Maintenant les noms des photos du dossier choisi sont dans le DLIST 10
J'espère que c'est plus clair pour toi. Une remarque: regarde en même temps le manuel de référence de chaque Mots-Clés. A+ | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 3 Oct 2012 - 15:14 | |
| @ Segeauze, Très bien, si tu buttes sur quelque chose n'hésites pas à solliciter la bande de joyeux drills ... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 14:19 | |
| @sergeauze si tu as besoin d'une routine (SUB) pour connaître les dimensions d'une image (c'est nécessaire à mon avis pour ce que tu veux faire): - Code:
-
' Recherche des dimensions en pixels (largeur et hauteur) d'une image aux ' formats Jpg, Bmp, Gif ou Tga DIM f$, w%, h%
f$ = "C:\GRAPH\JPG\Joconde.jpg": ' exemple d'utilisation
Dimima(f$, w%, h%): ' -> dimensions dans w% et h% (erreur si w% < 0)
END
SUB Dimima(f$, wi%, hi%) DIM_LOCAL dim_s$, dim_sz%, dim_v%(3000), dim_ad%, dim_offs%, dim_posit% IF LABEL("reter") = 0 THEN LABEL reter IF LABEL("retel") = 0 THEN LABEL retel dim_s$ = UPPER$(RIGHT$(f$, 4)): w% = -1 IF FILE_EXISTS(f$) = 0 THEN GOTO retel: ' EXIT_SUB FILEBIN_OPEN_READ 9, f$: dim_sz% = FILEBIN_SIZE(9) FILEBIN_BLOCK_READ 9,26,dim_v%(0) IF dim_s$ = ".JPG" IF dim_v%(0) <> 255 OR dim_v%(1) <> 216 THEN w% = -2: GOTO reter: ' EXIT_SUB dim_ad% = 0: dim_offs% = 0 REPEAT REPEAT dim_posit% = dim_ad% + 2 + dim_offs% IF dim_posit% >= dim_sz% THEN w% = -3: GOTO reter: ' EXIT_SUB FILEBIN_POSITION 9, dim_posit%: FILEBIN_BLOCK_READ 9,4,dim_v%(0) IF dim_v%(0) <> 255 THEN w% = -4: GOTO reter: ' EXIT_SUB dim_offs% = 256*dim_v%(2) + dim_v%(3) dim_ad% = FILEBIN_POS(9) - 4 UNTIL (dim_v%(1) >= 192 AND dim_v%(1) <= 195): ' # FFC0 à FFC3 FILEBIN_BLOCK_READ 9,5,dim_v%(0) UNTIL dim_v%(0) = 8 h% = 256*dim_v%(1) + dim_v%(2): w% = 256*dim_v%(3) + dim_v%(4) ELSE IF dim_s$ = ".BMP" w% = dim_v%(18)+256*dim_v%(19)+256*256*dim_v%(20)+256*256*256*dim_v%(21) h% = dim_v%(22)+256*dim_v%(23)+256*256*dim_v%(24)+256*256*256*dim_v%(25) ELSE IF dim_s$ = ".GIF" w% = dim_v%(6) + 256*dim_v%(7): h% = dim_v%(8) + 256*dim_v%(9) ELSE IF dim_s$ = ".TGA" w% = dim_v%(12)+256*dim_v%(13): h% = dim_v%(14)+256*dim_v%(15) END_IF END_IF END_IF END_IF reter: FILEBIN_CLOSE 9 retel: END_SUB | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 16:08 | |
| @JL35 J’ai testé ta routine : GOOD Mais (vous êtes maintenant habitué à mes mais !), comme rien ne s’affiche à l’écran, j’ai ajouté en ligne 8 (juste avant le END) - Code:
-
PRINT "Largeur = "; w%; " Hauteur = "; h%
C’étais juste pour mon mais sans plus ! | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 18:01 | |
| J'espère que tu as pensé aussi à changer le nom du fichier | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 19:10 | |
| Ça c’est la 1ère chose à laquelle je pense : je l’eus su très tôt | |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Fais_moi un diaporama Ven 5 Oct 2012 - 19:36 | |
| Salut Oui c'est bien les dimensions de l'image qu'il faut obtenir Je suis en train d'y arriver avec color_pixel... Je fais un balayage horizontal et vertical sur le jpg charge (Le jpg se charge dans sa totalite en arriere plan dans le picture ,meme si l'on n'en voit qu'une partie ;on peut meme avoir des dimensions à zero) Mon balayage s'arrete aux limites du jpg lorsque les 3 composantes rvb renvoyees sont 0,0 0, soit le noir. Je prends des points de test assez eloignes l'un de l'autre. Les dimensions obtenues me permettent de calibrer mon affichage . Je teste la faisabilite de mon idee . Je regarde ton code Merci pour votre interet , à tous | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 19:49 | |
| Bon courage Sergeauze,
J'abandonne ce poste. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 19:52 | |
| J'ai des fonctions dans KGF.dll qui donnent les dimensions de l'image. Il y en a plusieurs - il n'y a qu'à choisir celle qui convient le mieux... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 20:06 | |
| @sergeauze ta méthode pour trouver les dimensions de l'image me paraît pour le moins... surprenante ! et si ça marche, plutôt... pardonne-moi, bestiale ! ça doit prendre un temps fou de balayer toute l'image pixel par pixel dans les deux sens pour ça, sauf si tu as une seule image, et encore, toute petite ! Et il faut prévoir un Picture plus grand que l'image, dans les deux sens. Une méthode que j'ai également utilisé (mais c'est un peu tordu): - charger l'image jpg dans un picture invisible (File_Load) - sauvegarder le picture dans un fichier bmp temporaire (File_Save) - lire le bmp en binaire (File_Read_Block) et en extraire les dimensions, à des emplacements précis (voir plus haut); - supprimer ce bmp temporaire (File_Delete).
@Klaus certes... mais il faut une dll ! pour ma part je n'y fais appel que s'il n'y a pas moyen d'y arriver en Panoramic pur. | |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 20:15 | |
| J'ai maintenant trois possibilites : ta dll ,Klaus ton code jean claude la mienne Je vais tester les 3 | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 20:16 | |
| | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 5 Oct 2012 - 20:17 | |
| Heu...une petite question.... Que veux tu que les autres "viewer" ne t'apportent pas ? | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 20:36 | |
| @Sergeauze,
Tu dis mon code ??? moi je n'ai fait que reprendre celui de JL35 pour y mettre des commentaires pour t'aider.... Rendons à Jules ce qui appartient à César...
Je quitte car maintenant je suis plus dans la course.
A+ | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 21:07 | |
| merci Jean Claude (de la part de Jules) | |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 21:15 | |
| "Que veux tu que les autres "viewer" ne t'apportent pas ?" Rien de plus , sinon en saisir le fonctionnement . J'adore demonter les mecanismes ,c'est mon cote bricoleur qui reprend le dessus
pour jl 35 Oui tu as raison ça rame mes excuses pour ma confusion bonsoir à vous | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Ven 5 Oct 2012 - 21:21 | |
| alors si tu aimes bricoler, n'hésite pas à te plonger dans la structure des fichiers en binaire c'est amusant, il suffit d'un programme de dump et d'avoir une idée du contenu des fichiers (à rechercher sur internet, on trouve tout ce qu'on veut), il y a des outils intéressants en panoramic pour s'amuser avec ça. C'est vrai que c'est bien plus satisfaisant de faire les choses soi-même que de les faire traiter par une boîte noire externe. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fais_moi un diaporama Lun 8 Oct 2012 - 22:58 | |
| @sergeauze (et autres...) je remets le code qui permet d'obtenir les dimensions d'une image, avec pour le cas des jpg avec Exifs (c'est le cas général pour les photos numériques) le renvoi de la date et heure de prise de vue, ce qui peut être intéressant pour avoir la date/heure réelle dans le cas où l'image a été retouchée ultérieurement. Et mis à jour avec la dernière version de Panoramic (avec les Exit_Sub): - Code:
-
' Recherche des dimensions en pixels (largeur et hauteur) d'une image aux ' formats Jpg, Bmp, Gif ou Tga. Si Exifs (Jpg), date/heure de prise de vue. DIM f$, w%, h%, dtpv$
f$ = "C:\Photos\...\DSCF1192.jpg": ' à voir
Dimima(f$, w%, h%, dtpv$): ' -> dimensions et date/heure dans w%, h% et dtpv$ print f$ + " " + str$(w%) + "x" + str$(h%) + " - " + dtpv$: ' pour papydall
END ' ============================================================================== SUB Dimima(f$, wi%, hi%, datpv$) DIM_LOCAL dim_s$, dim_sz%, dim_v%(3000), dim_ad%, dim_of%, dim_po%, dim_ex% dim_s$ = UPPER$(FILE_EXTRACT_EXTENSION$(f$)): w% = -1 IF FILE_EXISTS(f$) = 0 THEN EXIT_SUB FILEBIN_OPEN_READ 9, f$: dim_sz% = FILEBIN_SIZE(9) FILEBIN_BLOCK_READ 9,100,dim_v%(0) IF dim_s$ = ".JPG" IF dim_v%(0)<>255 OR dim_v%(1)<>216 THEN FILEBIN_CLOSE 9: w% = -2: EXIT_SUB dim_ex% = 0 FOR dim_of% = 4 TO 100 IF dim_v%(dim_of%)=73 AND dim_v%(dim_of%+1)=73: ' &4949 IF dim_v%(dim_of%+2)=42 AND dim_v%(dim_of%+3)=0: ' &2A00 dim_ex% = dim_of%: EXIT_FOR: ' Tiff header (Exif) trouvé END_IF END_IF NEXT dim_of% dim_ad% = 0: dim_of% = 0 REPEAT REPEAT dim_po% = dim_ad% + 2 + dim_of% IF dim_po% >= dim_sz% THEN FILEBIN_CLOSE 9: w% = -3: EXIT_SUB FILEBIN_POSITION 9, dim_po%: FILEBIN_BLOCK_READ 9,4,dim_v%(0) IF dim_v%(0) <> 255 THEN FILEBIN_CLOSE 9: w% = -4: EXIT_SUB dim_of% = 256*dim_v%(2) + dim_v%(3) dim_ad% = FILEBIN_POS(9) - 4 UNTIL (dim_v%(1) >= 192 AND dim_v%(1) <= 195): ' # FFC0 à FFC3 FILEBIN_BLOCK_READ 9,5,dim_v%(0) UNTIL dim_v%(0) = 8 h% = 256*dim_v%(1) + dim_v%(2): w% = 256*dim_v%(3) + dim_v%(4) dtpv$ = "" IF dim_ex% > 0: ' infos Exif: date/heure de prise de vue FILEBIN_POSITION 9, 0: FILEBIN_BLOCK_READ 9,1000,dim_v%(0) FOR dim_of% = dim_ex% TO 1000 IF dim_v%(dim_of%)=50 AND dim_v%(dim_of%+1)=1: ' &3201 dim_of% = dim_ex%+dim_v%(dim_of%+8)+256*dim_v%(dim_of%+9): ' offset date/heure FOR dim_po% = dim_of% TO dim_of%+18: ' 19 octets dtpv$ = dtpv$ + CHR$(dim_v%(dim_po%)) NEXT dim_po% EXIT_FOR: ' trouvé END_IF NEXT dim_of% END_IF ELSE IF dim_s$ = ".BMP" w% = dim_v%(18)+256*dim_v%(19)+256*256*dim_v%(20)+256*256*256*dim_v%(21) h% = dim_v%(22)+256*dim_v%(23)+256*256*dim_v%(24)+256*256*256*dim_v%(25) ELSE IF dim_s$ = ".GIF" w% = dim_v%(6) + 256*dim_v%(7): h% = dim_v%(8) + 256*dim_v%(9) ELSE IF dim_s$ = ".TGA" w% = dim_v%(12)+256*dim_v%(13): h% = dim_v%(14)+256*dim_v%(15) END_IF END_IF END_IF END_IF FILEBIN_CLOSE 9 END_SUB ' ==============================================================================
| |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Fais_moi un diaporama Mar 9 Oct 2012 - 11:18 | |
| Bonjour merci à jl 35 pour ton code Je bute sur la ligne 17: (28)Not defined variable(dim);line :17 Surement quelque chose que j'aurais pas compris dans l'utilisation du code | |
|
| |
Contenu sponsorisé
| Sujet: Re: Fais_moi un diaporama | |
| |
|
| |
| Fais_moi un diaporama | |
|