Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Ajouter des légendes à des photos | |
| | |
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Ajouter des légendes à des photos Lun 24 Sep 2012 - 14:47 | |
| Par exemple pour faire un diaporama au retour de vacances, transformer certaines images en images-titres, ou commenter certaines images qui restent insérées dans la série. Pour des raisons de facilité, le programme fait appel à deux ressources externes (freeware): - IrfanView, bien connu: utilisé pour connaître les dimensions et la date et heure de prise de vue initiale de la photo (données Exif de la photo), et pour les conversions bmp -> jpg des images résultat. - FileTouch.exe, petit utilitaire (16k) qui permet de modifier les date/heure de création d'un fichier: pour forcer ces données après modification d'une image (remettre les date/heure de prise de vue), à télécharger éventuellement ici: http://www.softtreetech.com/24x7/archive/47.htm- ExifTool.exe qui permet de transférer les données Exif de prise de vue d'une photo d'un fichier à un autre, téléchargeable ici: http://www.clubic.com/telecharger-fiche202900-exiftool.htmlLes chemins d'accès de ces deux fichiers sont à confirmer en tête du programme (iv$ et exif$). (également dans la SUB Img_Infos pour IrfanView) Le texte à ajouter (police, taille, couleur, fond et enrichissements à la demande) est positionné soit par clic dans l'image, soit en précisant les coordonnées (une grille au pas de 100 pixels peut être affichée, en bascule, pour faciliter le repérage). Le fond du texte est soit coloré, soit transparent. Le fichier résultat est soit le fichier d'origine qui sera écrasé ('Enregistrer'), soit un fichier différent ('Enregistrer sous...'). La date/heure du fichier résultat est soit la date actuelle, soit la date/heure de prise de vue (origine), soit une date/heure à préciser.Par défaut, les données de prise de vue d'origine sont transférées dans le fichier résultat. Et voilà le travail: - Code:
-
LABEL Chr, Chf, Chf1, Chf2, Chp, Chp1, Chcf, Chct, Chxy, Grille, Exec, Annul, Chopt LABEL Save, Save1, Save2, Global, Mkbat, Aide DIM p, pc, i%, k%, a$, rep$, f$, fr$, ftmp$, fdir$, iv$, wi%, hi%, wp%, hp%, er$ DIM rt%, gt%, bt%, rf%, gf%, bf%, txt$, ta%, dt$, nbc, ht%, xt%, yt%, xr%, yr% DIM ra, gri%, pv, pi, x%, y%, wt%, r%, g%, b%, lfx, exif$, fsv$, fba$, occ DIM fmo$, jj, mm, aa, hh, mi, ss, rd$, xim%, bat$, scr$ ' * Fichiers créés par le programme: ftmp$ = "C:\TEMP\Provis.bmp" fsv$ = "C:\TEMP\Ssauvex.jpg" fdir$ = "C:\TEMP\Dir.tmp" bat$ = "C:\TEMP\Prgbat.bat" scr$ = "C:\TEMP\Script.vbs" ' * Programmes externes existants: iv$ = "C:\Progra~2\IrfanView\i_view32.exe ": ' sur Windows 7, à vérifier exif$ = "C:\UTIL\Exiftool.exe ": ' transfert des données Exifs
WIDTH 0,1020: HEIGHT 0, 810: FONT_BOLD 0: BORDER_SMALL 0 COLOR 0,190,255,255: CAPTION 0," - LÉGENDES DE PHOTOS -" ALPHA 1: TOP 1,5: LEFT 1,5: CAPTION 1, "Image:" EDIT 2: TOP 2,25: LEFT 2,5: WIDTH 2,320: FONT_COLOR 2,180,0,0 TEXT 2," - Clic pour choisir le répertoire des images..." ON_CLICK 2, Chr ALPHA 3: TOP 3,45: LEFT 3,5 LIST 4: TOP 4,70: LEFT 4,5: WIDTH 4,200: HEIGHT 4,700 ON_CLICK 4, Chf
CHECK 5: TOP 5,TOP(4)+12: LEFT 5,WIDTH(4)+10:WIDTH 5,15 PRINT_LOCATE LEFT(5)+15,TOP(5)-12: PRINT "Appliquer" PRINT_LOCATE LEFT(5)+15,TOP(5): PRINT " à tout le" PRINT_LOCATE LEFT(5)+15,TOP(5)+12: PRINT "répertoire"
lfx = WIDTH(2) ALPHA 10: TOP 10,7: LEFT 10,lfx+40 CAPTION 10,"X= Y= ou cliquer" SPIN 11: TOP 11,5: LEFT 11,lfx+60: WIDTH 11,60 SPIN 12: TOP 12,5: LEFT 12,lfx+150: WIDTH 12,60 ALPHA 13: TOP 13,30: LEFT 13,lfx+30 CAPTION 13,"Police: Taille:" EDIT 14: TOP 14,46: LEFT 14,lfx+30: WIDTH 14,180: TEXT 14,"Comic Sans MS" ON_CLICK 14, Chp SPIN 15: TOP 15,46: LEFT 15,lfx+220: WIDTH 15,55: POSITION 15,80 LIST 16: TOP 16,65: LEFT 16,lfx+30: WIDTH 16,195: HEIGHT 16, 650: HIDE 16 FONT_NAMES_LOAD 16 ON_CLICK 16, Chp1 ALPHA 17: TOP 17,70: LEFT 17,lfx: CAPTION 17,"Couleur texte:" nbc = 9 DATA 0,0,0,255,255,255,160,160,160,255,0,0,0,255,0,0,0,255,255,255,0,128,64,0,255,0,255 FOR i% = 0 TO nbc-1 pc = 20+i% PICTURE pc: TOP pc, 85: LEFT pc,lfx+i%*30: WIDTH pc,25: HEIGHT pc,20 READ rt%: READ gt%: READ bt%: COLOR pc, rt%, gt%, bt% ON_CLICK pc, Chct ALPHA 30+i%: TOP 30+i%,TOP(pc)+20: LEFT 30+i%,LEFT(pc)+8 NEXT i% rt% = 0: gt% = 0: bt% = 0: ' couleur de texte initiale (noir) CAPTION 30,"X" ALPHA 18: TOP 18,120: LEFT 18,lfx: CAPTION 18,"Couleur fond:" DATA 0,0,0,255,255,255,160,160,160,255,0,0,0,255,0,0,0,255,255,255,0,128,64,0,255,0,255 DATA 254,254,254 FOR i% = 0 TO nbc pc = 40+i% PICTURE pc: TOP pc, 135: LEFT pc,lfx+i%*30: WIDTH pc,25: HEIGHT pc,20 READ rf%: READ gf%: READ bf%: COLOR pc, rf%, gf%, bf% ON_CLICK pc, Chcf ALPHA 50+i%: TOP 50+i%,TOP(pc)+20: LEFT 50+i%,LEFT(pc)+8 NEXT i% pc = 40+nbc 2D_TARGET_IS pc: 2D_LINE 0,0,25,20: 2D_LINE 0,20,25,0: ' couleur transparente ALPHA 19: TOP 19,TOP(pc)-15: LEFT 19,LEFT(pc)-5: CAPTION 19,"Transp." rf% = 255: gf% = 255: bf% = 255: ' couleur de fond initiale (blanc) CAPTION 51,"X"
ALPHA 60: TOP 60,5: LEFT 60, 640: CAPTION 60,"Texte:" MEMO 61: TOP 61,5: LEFT 61,680: WIDTH 61,320: HEIGHT 61,60 COLOR 61,255,255,180: FONT_SIZE 61,10 PRINT_LOCATE 700,65: PRINT "(&N= nom du fichier, &D = date de prise de vue)" CHECK 63: TOP 63,80: LEFT 63,LEFT(61)+20: CAPTION 63,"Gras" CHECK 64: TOP 64,80: LEFT 64,LEFT(63)+100: CAPTION 64,"Italique" CHECK 65: TOP 65,80: LEFT 65,LEFT(64)+100: WIDTH 65,80: CAPTION 65,"Souligné" BUTTON 70: TOP 70, 102: LEFT 70,LEFT(61)+20: CAPTION 70,"Grille": ON_CLICK 70,Grille BUTTON 71: TOP 71, 102: LEFT 71,LEFT(70)+85: CAPTION 71, "Annuler": ON_CLICK 71, Annul BUTTON 72: TOP 72, 102: LEFT 72,LEFT(71)+85: CAPTION 72, "Exec": ON_CLICK 72, Exec BUTTON 73: TOP 73, 140: LEFT 73,LEFT(70): WIDTH 73,120: CAPTION 73, "Enregistrer": ON_CLICK 73,Save1 BUTTON 85: TOP 85,140: LEFT 85,LEFT(73)+125: WIDTH 85,120 CAPTION 85,"Enregistrer sous...": ON_CLICK 85,Save BUTTON 83: TOP 83,40: LEFT 83,640: WIDTH 83,30: CAPTION 83,"?": ON_CLICK 83,Aide CHECK 84: TOP 84,168: LEFT 84,LEFT(70)+20: WIDTH 84,250 CAPTION 84,"Recopier les infos Exifs d'origine": MARK_ON 84 2D_TARGET_IS 0: 2D_LINE 636,0,636,190: 2D_LINE 636,132,WIDTH(0),132
p = 90 wp% = 780: hp% = wp%*3/4 PICTURE p: TOP p,190: LEFT p,220: WIDTH p, wp%: HEIGHT p, hp%: STRETCH_ON p COLOR p,180,180,180: ON_CLICK p, Chxy pv = 91 PICTURE pv: TOP pv,-400: WIDTH pv,1000: HEIGHT pv,300: ' picture annexe pour fond transparent
OPEN_DIALOG 98 FILTER 98,"Fichiers image|*.jpg;*.bmp" SAVE_DIALOG 99 FILTER 99,"Fichiers image|*.jpg;*.bmp" IMAGE 100 occ = 0
END ' ============================================================================== Chr: a$ = FILE_NAME$(98) IF LEN(a$) < 4 THEN RETURN rep$ = FILE_EXTRACT_PATH$(a$) EXECUTE_WAIT "Cmd.exe /c DIR " + rep$ + "*.jpg /B >" + fdir$ FILE_LOAD 4, fdir$ FILE_DELETE fdir$ TEXT 2, "- Clic une image dans la liste..." RETURN ' ------------------------------------------------------------------------------ Chf: IF occ = 1 THEN RETURN occ = 1: ' pour éviter les collisions (clics trop rapides dans la liste) Chf1: f$ = rep$ + ITEM_INDEX$(4) Chf2: FILE_LOAD p, f$ Img_Infos(f$, wi%, hi%, dt$, ta%) FONT_COLOR 2,0,0,255: TEXT 2, f$ CAPTION 3, STR$(wi%)+"x"+STR$(hi%)+" pixels, " + dt$ ' date/heure de prise de vue, si exifs (sinon date/heure fichier) jj = VAL(LEFT$(dt$,2)): mm = VAL(MID$(dt$,4,2)): aa = VAL(MID$(dt$,7,4)) hh = VAL(MID$(dt$,12,2)): mi = VAL(MID$(dt$,15,2)): ss = VAL(MID$(dt$,18,2)) wp% = wi%*hp%/hi%: WIDTH p, wp% FILE_LOAD p, f$ ra = wp%/wi% xr% = 0: yr% = 0 occ = 0 RETURN ' ------------------------------------------------------------------------------ Chp: SHOW 16 RETURN ' ------------------------------------------------------------------------------ Chp1: HIDE 16 TEXT 14, ITEM_INDEX$(16) FONT_NAME 61, TEXT$(14) RETURN ' ------------------------------------------------------------------------------ Chcf: ' couleur fond FOR i% = 50 TO 50+nbc: CAPTION i%, "": NEXT i% FOR i% = 40 TO 40+nbc IF CLICKED(i%) = 1 THEN EXIT_FOR NEXT i% rf% = COLOR_PIXEL_RED(i%,5,1): gf% = COLOR_PIXEL_GREEN(i%,5,1) bf% = COLOR_PIXEL_BLUE(i%,5,1) CAPTION 10+i%,"X" RETURN ' ------------------------------------------------------------------------------ Chct: ' couleur texte FOR i% = 30 TO 30+nbc-1: CAPTION i%, "": NEXT i% FOR i% = 20 TO 20+nbc-1 IF CLICKED(i%) = 1 THEN EXIT_FOR NEXT i% rt% = COLOR_PIXEL_RED(i%,5,1): gt% = COLOR_PIXEL_GREEN(i%,5,1) bt% = COLOR_PIXEL_BLUE(i%,5,1) CAPTION 10+i%,"X" RETURN ' ------------------------------------------------------------------------------ Chxy: IF ra <= 0 THEN ra = 1: ' RETURN: ' pas d'image affichée xt% = MOUSE_X_LEFT_DOWN(p)/ra: yt% = MOUSE_Y_LEFT_DOWN(p)/ra 2D_TARGET_IS p: 2D_PEN_COLOR 255,0,255: 2D_PEN_WIDTH 5 IF xr% <> 0 2D_IMAGE_PASTE 100,xr%-40,yr%-40 END_IF 2D_IMAGE_COPY 100,xt%-40,yt%-40,xt%+43,yt%+43 2D_LINE xt%-40,yt%,xt%+40,yt%: 2D_LINE xt%,yt%-40,xt%,yt%+40 POSITION 11, xt%: POSITION 12, yt% xr% = xt%: yr% = yt% RETURN ' ------------------------------------------------------------------------------ Grille: IF f$ = "" THEN RETURN IF gri% = 0 2D_TARGET_IS p: 2D_PEN_COLOR 0,255,255: 2D_PEN_WIDTH 4 FOR i% = 0 TO wi% STEP 100 2D_LINE i%,0,i%,hi% NEXT i% FOR i% = 0 TO hi% STEP 100 2D_LINE 0,i%,wi%,i% NEXT i% 2D_PEN_COLOR 255,0,255 FOR i% = 0 TO wi% STEP 500 2D_LINE i%,0,i%,hi% NEXT i% FOR i% = 0 TO hi% STEP 500 2D_LINE 0,i%,wi%,i% NEXT i% gri% = 1 ELSE FILE_LOAD p, f$ gri% = 0 END_IF RETURN ' ------------------------------------------------------------------------------ Exec: txt$ = ITEM_READ$(61,1): IF txt$ = "" THEN RETURN FILE_LOAD p, f$ IF rf% = 254: ' couleur transparente pi = pv: ' picture annexe 2D_TARGET_IS pv: COLOR pv,254,254,254: CLS ELSE pi = p END_IF 2D_TARGET_IS pi: 2D_FILL_COLOR rf%,gf%,bf%: 2D_PEN_COLOR rt%,gt%,bt% PRINT_TARGET_IS pi FONT_NAME pi, TEXT$(14): FONT_SIZE pi, POSITION(15) FONT_COLOR pi,rt%,gt%,bt% FONT_BOLD_OFF pi: FONT_ITALIC_OFF pi: FONT_UNDERLINE_OFF pi ht% = TEXT_HEIGHT(txt$,pi) IF CHECKED(63) = 1 THEN FONT_BOLD pi IF CHECKED(64) = 1 THEN FONT_ITALIC pi IF CHECKED(65) = 1 THEN FONT_UNDERLINE pi xt% = POSITION(11): yt% = POSITION(12) FOR i% = 1 TO COUNT(61) txt$ = ITEM_READ$(61, i%) k% = INSTR(txt$, "&") WHILE k% > 0 IF MID$(UPPER$(txt$), k%, 2) = "&N" txt$ = LEFT$(txt$, k%-1) + FILE_EXTRACT_NAME$(f$) + MID$(txt$, k%+2,1000) ELSE IF MID$(UPPER$(txt$), k%, 2) = "&D" txt$ = LEFT$(txt$, k%-1) + LEFT$(dt$, 16) + MID$(txt$, k%+2,1000) ELSE EXIT_WHILE END_IF END_IF k% = INSTR(txt$, "&") END_WHILE IF pi = p PRINT_LOCATE xt%, yt%: PRINT txt$: yt% = yt% + ht% ELSE wt% = TEXT_WIDTH(txt$, pv) 2D_TARGET_IS pv: CLS: PRINT txt$ 2D_TARGET_IS p: 2D_PEN_COLOR rt%,gt%,bt% FOR y% = 0 TO ht%-1 FOR x% = 0 TO wt%-1 r% = COLOR_PIXEL_RED(pv, x%, y%) IF r% <> 254 g% = COLOR_PIXEL_GREEN(pv, x%, y%) b% = COLOR_PIXEL_BLUE(pv, x%, y%) 2D_POINT xt%+x%, yt%+y% END_IF NEXT x% DISPLAY NEXT y% yt% = yt% + ht% END_IF NEXT i% RETURN ' ------------------------------------------------------------------------------ Annul: FILE_LOAD p, f$ RETURN ' ------------------------------------------------------------------------------ Chopt: IF CLICKED(74) = 1 THEN MARK_OFF 75 IF CLICKED(75) = 1 THEN MARK_OFF 74 RETURN ' ------------------------------------------------------------------------------ Save: ' Enregistrer sous... IF CHECKED(5) = 1 THEN GOTO Global a$ = FILE_NAME$(99) IF LEN(a$) < 4 THEN RETURN fr$ = a$ GOTO Save2 Save1: ' Enregistrer dans le fichier d'origine IF CHECKED(5) = 1 THEN GOTO Global IF f$ = "" THEN RETURN fr$ = f$ Save2: IF FILE_EXISTS(fsv$) = 1 THEN FILE_DELETE fsv$ FILE_COPY f$,fsv$: ' sauvegarde provisoire de l'original FILE_SAVE p, ftmp$ EXECUTE_WAIT iv$ + ftmp$ + " /convert=" + fr$ FILE_DELETE ftmp$ IF CHECKED(84) = 1 ' recopie des infos Exifs de l'original ' EXECUTE_WAIT exif$ + "-TagsFromFile " + fsv$ + " -all:all " + fr$ fba$ = fsv$: GOSUB Mkbat FILE_DELETE fbat$: FILE_DELETE scr$ ' suppression de la sauvegarde de l'original faite par ExifTool (inutile): FILE_DELETE fr$ + "_original": ' sauvegarde de l'original END_IF FILE_DELETE fsv$ RETURN ' ------------------------------------------------------------------------------ Global: ' traitement sur toutes les images du répertoire IF TRIM$(ITEM_READ$(61,1)) = "" THEN RETURN: ' pas de texte a$ = "Voulez-vous vraiment appliquer le traitement"+chr$(10) a$=a$+"à toutes les images du répertoire ?" i% = MESSAGE_CONFIRMATION_YES_NO(a$) IF i% <> 1 THEN MARK_OFF 5: RETURN a$ = "Répertoire de destination des images:" rd$ = MESSAGE_INPUT$("Répertoire",a$,"") IF rd$ = "" THEN RETURN IF DIR_EXISTS(rd$) = 0 i% = MESSAGE_CONFIRMATION_YES_NO("Répertoire " + rd$+" inexistant, le créer ?") IF i% <> 1 THEN RETURN DIR_MAKE rd$ END_IF IF RIGHT$(rd$,1) <> "" THEN rd$ = rd$ + "" FOR xim% = 1 TO COUNT(4) f$ = rep$ + ITEM_READ$(4, xim%): GOSUB Chf2 GOSUB Exec FILE_SAVE p, ftmp$ a$ = ITEM_READ$(4, xim%): a$ = LEFT$(a$, LEN(a$)-4) fr$ = rd$ + a$ + "_N.jpg" EXECUTE_WAIT iv$ + ftmp$ + " /convert=" + fr$ FILE_DELETE ftmp$ IF CHECKED(84) = 1 ' recopie des infos Exifs de l'original ' EXECUTE_WAIT exif$ + "-TagsFromFile " + f$ + " -all:all " + fr$ fba$ = f$: GOSUB Mkbat ' suppression de la sauvegarde de l'original faite par ExifTool (inutile): FILE_DELETE fr$ + "_original": ' sauvegarde de l'original END_IF NEXT xim% IF FILE_EXISTS(bat$)=1 THEN FILE_DELETE bat$ IF FILE_EXISTS(scr$)=1 THEN FILE_DELETE scr$ RETURN ' ------------------------------------------------------------------------------ Mkbat: FILE_OPEN_WRITE 1, bat$: ' fichier .bat FILE_WRITELN 1, exif$ + "-TagsFromFile " + fba$ + " -all:all " + fr$ FILE_CLOSE 1 a$ = "CreateObject("+CHR$(34)+"Wscript.Shell"+CHR$(34)+").Run " a$ = a$ + CHR$(34) + bat$ + CHR$(34) + ", 0, True" FILE_OPEN_WRITE 1, scr$: ' script vbs FILE_WRITELN 1, a$ FILE_CLOSE 1 EXECUTE_WAIT "WSCRIPT.exe "+scr$ RETURN ' ------------------------------------------------------------------------------ SUB Img_infos(f$, w%, h%, d$, t%) ' Image f$ -> wi%, hi%, dt$, ta% (dimensions, date/heure de prise de vue, taille) DIM_LOCAL a$, ftm$, irf$ FILEBIN_OPEN_READ 1, f$: ta% = FILEBIN_SIZE(1): FILEBIN_CLOSE 1: ' taille octets ftm$ = "C:\Temp\Ifxwz.txt": ' fichier de manoeuvre irf$ = "C:\Progra~2\Irfanv~1\i_view32.exe ": ' IrfanView EXECUTE_WAIT irf$ + f$ + " /info=" + ftm$ + " /fullinfo" FILE_OPEN_READ 9, ftm$: wi% = 0: hi% = 0: dt$ = "" WHILE FILE_EOF(9) = 0: FILE_READLN 9, a$ IF LEFT$(a$, 16) = "Image dimensions" a$ = MID$(a$, 20, 50) wi% = VAL(LEFT$(a$, INSTR(a$, " ") - 1)) a$ = MID$(a$, INSTR(a$, " ") + 3, 50) hi% = VAL(LEFT$(a$, INSTR(a$, " ") - 1)) ELSE IF LEFT$(a$, 14) = "File date/time" ' pour le cas où il n'y a pas d'Exifs a$ = MID$(a$, 18, 11) + MID$(a$, 31, 8) dt$ = LEFT$(a$,11) + RIGHT$(a$,8) ELSE IF LEFT$(a$, 16) = "DateTimeOriginal" a$ = MID$(a$, 20, 50) dt$ = MID$(a$,9,2)+"/"+MID$(a$,6,2)+"/"+LEFT$(a$,4)+MID$(a$,11,9) EXIT_WHILE END_IF END_IF END_IF END_WHILE FILE_CLOSE 9: FILE_DELETE ftm$ END_SUB ' ------------------------------------------------------------------------------ Aide: DIM rc$: rc$ = CHR$(13) a$="- LÉGENDES SUR PHOTOS -"+rc$+rc$ a$=a$+". Cliquer pour chosir le répertoire des images -> affichage de la liste des images."+rc$ a$=a$+". Cliquer l'image choisie dans la liste -> affichage de l'image."+rc$ a$=a$+". Saisir le texte à incruster, et choisir ses caractéristiques: police, taille,"+rc$ a$=a$+" couleur, couleur de fond, enrichissements."+rc$ a$=a$+" NB: dans le texte saisi, les expressions [ampersand]N et [ampersand]D seront"+rc$ a$=a$+" remplacées respectivement par le nom strict du fichier (sans chemin) et la"+rc$ a$=a$+" date/heure de prise de vue."+rc$ a$=a$+". Choisir l'emplacement (coin supérieur gauche) du texte sur l'image:"+rc$ a$=a$+"- cliquer dans l'image à l'emplacement voulu -> affichage d'une croix"+rc$ a$=a$+" ou"+rc$ a$=a$+"- saisir les coordonnées X et Y: on peut afficher une grille au pas de 100"+rc$ a$=a$+" pixels pour repérage: bouton 'Grille', en bascule."+rc$ a$=a$+". Puis cliquer le bouton 'Exec' pour un aperçu du résultat."+rc$+rc$ a$=a$+"On peut reprendre tous les réglages et refaire 'Exec' pour voir le résultat."+rc$+rc$ a$=a$+"Quand le résultat est satisfaisant, on peut l'enregistrer en jpg ou bmp:"+rc$ a$=a$+"- soit dans l'image d'origine qui sera écrasée: bouton 'Enregistrer'."+rc$ a$=a$+"- soit dans un nouveau fichier image: bouton 'Enregistrer sous...'."+rc$+rc$ a$=a$+"Par défaut, toutes les informations de prise de vue du fichier d'origine,"+rc$ a$=a$+"notamment la date et l'heure (infos 'Exifs') seront reportées dans le fichier"+rc$ a$=a$+"résultat (il est possible de décocher cette option si on le désire)."+rc$+rc$ a$=a$+"- TRAITEMENT PAR LOTS -"+rc$+rc$ a$=a$+"Il est possible d'appliquer le traitement ci-dessus à toutes les images d'un"+rc$ a$=a$+"même répertoire: cocher l'option 'Appliquer à tout le répertoire'."+rc$ a$=a$+"Mode opératoire: sélectionner la première image du répertoire, fixer les"+rc$ a$=a$+"paramètres, puis 'Exec' pour voir le résultat. Réajuster les paramètres"+rc$ a$=a$+"jusqu'à obtenir un résultat satisfaisant."+rc$ a$=a$+"Cliquer 'Enregistrer': le répertoire de destination sera demandé, puis créé"+rc$ a$=a$+"si nécessaire. Les images résultat porteront le suffixe _N, par exemple"+rc$ a$=a$+"DSCF1234.jpg sera enregistré en DSCF1234_N.jpg dans le répertoire résultat."+rc$ a$=a$+"Toutes les images résultat porteront le même texte au même emplacement, sauf"+rc$ a$=a$+"pour les paramètres [ampersand]N et [ampersand]D qui sont personnalisés pour"+rc$ a$=a$+"chaque image."+rc$ MESSAGE a$ FREE rc$ RETURN ' ------
PS concernant les date/heure fichier: Pour mon cas, je classe les photos en fonction des date/heure de prise de vue (because deux séries de photos, mon épouse et moi, que j'interclasse dans l'ordre chronologique). (Et il vaut mieux que les deux appareils soient réglés à la même heure !). D'où l'utilité de rétablir cette donnée après modifications (en effet, si on modifie une image: ajout de légende par exemple, elle prend la date/heure actuelle, et elle se retrouverait déclassée). Mise à jour du 25/9 à 21h50: Sur une suggestion de Nardo, appel à Exiftool.exe (au lieu de Filetouch.exe) pour transférer les données Exif dans l'image résultat. Et ajout d'un petit mode d'emploi. 26/9: dans le texte saisi, les expressions &N et &D sont remplacées respectivement par le nom du fichier et la date de prise de vue. 26/9 22h00: ajout du traitement par lots (sur une série d'images). 27/9 20h10: suppression de la fenêtre noire à l'exécution de ExifTool.
Dernière édition par JL35 le Jeu 27 Sep 2012 - 20:09, édité 5 fois | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 15:18 | |
| Hello JL35, Ça m'a l'air pas mal... je peux pas tester ton prg là où je suis mais je ferai le test ce soir... c'est toujours pratique ce genre d'utilitaire... 1- Dans ta procédure Img_infos: A quoi servent les paramètres w%,h%,d$ et t% ? 2 - Tu déclares une variable globale iv$ que tu n'utilises pas ensuite dans Img_info (cf irf$) (en plus, les chaines ne sont pas identiques ) PS: Ça serait bien de rajouter quelques commentaires dans ton source. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 15:34 | |
| eh Nardo ! merci pour la réactivité ! Tu as évidemment raison pour les commentaires dans le source, je l'avais fait d'abord pour mon usage personnel et j'ai pensé que ça pourrait en intéresser d'autres. Mea culpa. Maintenant ce n'est pas très compliqué, comme ce que je fais en général, si je trouve compliqué je mets spontanément des commentaires pour moi Dans la Sub, w%, h%, d$ et t% sont bidons et locales en remplacement des variables réelles wi%, hi%, dt$ et ta% données en paramètres. Si je mets SUB Img_Infos(f$,wi%,hi%,dt$,ta%) ça me renvoie des zéros... Effectivement j'ai gardé une redéfinition du chemin de IrfanView dans la sub pour que cette sub soit réutilisable ailleurs, la chaîne est légèrement différente (involontairement) mais le chemin est le même. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 16:10 | |
| Si tu veux que ça passe dans tous les cas, pourquoi ne pas passer le chemin de irfanview en paramètre à la procédure ?...
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 24 Sep 2012 - 16:42 | |
| Je vais regarder çà de près, très près ce soir... Peut être pourrais ajouter un outils à mon "Picture tools"... si tu m' y autorises biensûr... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 17:02 | |
| @Nardo, oui certes, mais ça obligerait à déclarer ce chemin dans tous les programme qui font appel à la Sub, même s'ils n'en ont pas l'usage par ailleurs... c'est une utilisation locale, donc une déclaration locale... ça me paraît plus 'portable'.
@ygeronimi, il est bien entendu que j'autorise tout ce qu'on veut ! ici on se sert comme on veut, ça fait même plaisir d'être copié !
PS si on n'en a pas l'usage (pour les raisons que j'ai évoquées plus haut) on peut évidemment se passer du FileTouch.exe (modification des dates/heures), ça fait une ressource externe en moins. Mais bon, je trouve que c'est utile quand même. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 18:06 | |
| - JL35 a écrit:
- @Nardo, oui certes, mais ça obligerait à déclarer ce chemin dans tous les programme qui font appel à la Sub, même s'ils n'en ont pas l'usage par ailleurs... c'est une utilisation locale, donc une déclaration locale... ça me paraît plus 'portable'.
Si tu veux vraiment faire du portable, tu peux utiliser une chaine globale "locale" (une globale définie comme pour les "return" de fonction") qui définie un chemin par défaut lors de la déclaration du DIM (le tiens par exemple) et derrière tu fait un FILE_EXISTS si pas trouvé alors tu proposes une boite de dialogue qui te permet de sélectionner l'executable.... Exemple: - Code:
-
SUB Maprocedure(...) IF VARIABLE("MaProcedure_irfan$")=0 THEN DIM MaProcedure_irfan$:MaProcedure_irfan$="C:\...\irfanview.exe" IF FILE_EXISTS(MaProcedure_irfan$)=0 FILE_SELECT .... .... MaProcedure_irfan$=PATHNAME$(... END_IF ... END_SUB Là t'es tranquille, ça passe à tous les coups...
Dernière édition par Nardo26 le Lun 24 Sep 2012 - 18:20, édité 2 fois (Raison : Oubli d'un '=' dans le code... ;)) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 18:16 | |
| Disons que c'est une procédure qui est dans ma bibliothèque, donc à usage personnel (sauf si je diffusais ma bibliothèque de procédures, là ton argument serait valable), et donc chez moi le chemin des exécutables est toujours le même, ce sont des constantes en 'dur' dans les procédures.
Tu as raison sur le fond, certes, c'est valable si on est plusieurs utilisateurs. Moi je parlais de portable ... d'un programme perso à un autre tout aussi perso, pas d'un site à un autre. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 18:21 | |
| Dans ce cas là, pas de problème... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 23:02 | |
| Sympa JL35. Seule critique: ton choix de couleur pour la fenêtre, mais bon ça va, ce n'est pas trop dur à tuner | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Lun 24 Sep 2012 - 23:32 | |
| de gustibus et coloribus non disputandum... comme tu dis, c'est facile à changer ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 24 Sep 2012 - 23:55 | |
| Ok , je finis l'intégration de Coloramic et je m'attaque à ton code... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 0:16 | |
| Bonsoir JL35, Alors je viens de tester :
- j'obtiens une croix rose à la place du texte...
- Il faudrait rajouter un FILTER sur le bouton Sauvegarder sous, car il n'y a pas d'extension par défaut et si on n'en precise pas une, cela plante.
- Mon image avait pour date : 15/01/2012 17:44 et la sauvegarde 15/01/2012 16:44
- Les EXIF sur les jpg sont perdus (
je regarde si irfanview peut extraire/ajouter les EXIFs on peut mais il faut télécharger les plugins : METADATA.DLL)
Je continue à tester... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 0:56 | |
| rapidement because La croix rose c'est le positionnement du curseur quand tu cliques, le texte se placera à cet endroit quand tu feras 'Exec' (x et y sont mis à jour, normalement). OK, il manque le mode d'emploi. Sauvegarder sous.. ok, c'est à voir Dans mon sub Img_Infos je vais bien lire les exifs du fichier par l'intermédiaire de IrfanView en natif ? c'est précisé dans l'aide de irfanview, command line options (/info /fullinfo) Ton erreur de date (heure)... à voir... demain. et merci Nardo pour le retour, et... bonne nuit à tous ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 1:02 | |
| Pour les EXIF, il faut télécharger les plugins (pas dispo en natif), je viens de faire la mise à jour 4.33 (j'avais la 4.30) idem donc penser à charger les plugins (ça rame à mort sur leur serveur, faut pas être pressé, j'ai pas encore fini le téléchargement au bout de 20 minutes) EDIT : - Je viens d'installer le pack complet des plugins et pour les EXIFS : nada ! ca fonctionne mais tu récupères uniquement la date pour l'affichage (DateTimeOriginal) ... Les autres données sont perdues (j'aime bien conserver les infos de réglages ). - Pour la croix rose c'est ok... - il serait intéressant de pouvoir faire un batch du style: pouvoir appliquer le même texte au même emplacement etc... à toutes les images du répertoire courant (avec sauvegarde automatique par exemple mes images initiales IMG100_####.JPG et avoir IMG_<DATE><HHMMSS>.jpg au final.) - Pour la date : au chargement l'info date est correcte j'ai bien 17:44 d'affiché mais FileTouch me vire x heure(s), ça varie suivant les images (je pige pas pourquoi)... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Sep 2012 - 4:49 | |
| @ JL35, Je ne sais pas sur quel système d'exploitation tu es mais j'ai un affichage bizarre sur w7. (marges 8 de chaque cotés soit 16 haut 50 et bas 8 soit 58) bon A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 14:19 | |
| @ygeronimi Je suis sous W7, comme toi, pour moi les marges du Form 0 sont normales, 8 de chaque côté, 30 en haut et 8 en bas ? ou même plutôt 26 en haut au lieu de 30, puisqu'on est en Border_Small. Seule anomalie pour moi, l'affichage du caption du Form 0 qui est tronqué en bas, mais ça c'est connu dans le cas de Border_Small. Je ne vois pas bien ton problème...
@Nardo, Je viens de voir que j'ai tous les plugins IrfanView installés, je pensais que le fullinfo était en natif, mais tu as sûrement raison, ça doit être dans un des plugins. Mais je m'étonne que tu ne récupères pas toutes les infos de prise de vue, il me semble bien qu'elles y sont toutes dans le fichier résultat (vitesse, ouverture, focale, Iso, etc.), évidemment je ne les exploite pas dans mon programme. Pour les traitements en série, dans mon esprit le programme est fait pour sélectionner quelques images dans une série pour en faire des images-titres. On peut facilement envisager de marquer par programme toutes les images d'un répertoire avec le nom, la date, et éventuellement les infos de prise de vue (je crois que je l'ai fait dans un autre programme), mais à mon avis c'est dans un esprit un peu différent de ce que j'ai fait ici... ça se discute...
Quoi qu'il en soit, vous pouvez voir que le programme est très simple, court (300 lignes), et très facile à modifier/adapter, il y a tous les éléments... Par exemple le choix des couleurs texte/fond est très arbitraire et facile à modifier si on les trouve un peu agressives.
Dernière édition par JL35 le Mar 25 Sep 2012 - 14:31, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 14:31 | |
| Pareil pour moi JL35, je n'ai que le problème connue de l'affichage du caption du Form 0 qui est tronqué en bas | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 14:32 | |
| Bonjour ami Jicehel, on s'est croisés (j'éditais)-... @Nardo Pardon mais j'ai le cerveau un peu embrumé ces jours-ci (un bon rhume) et je viens seulement de comprendre ce que tu voulais dire avec les infos Exif ! Effectivement, vu le principe du système: Lecture du jpg dans un picture -> ajout du texte dans le picture -> sauvegarde du picture dans un bmp -> conversion du bmp en jpg et là, hélas, on a perdu toutes les infos Exif d'origine, c'est un fichier jpg brut tout neuf dans lequel on force éventuelle la date/heure de création... Et je ne vois pas du tout comment on pourrait les conserver (à part les écrire avec le texte sur l'image elle-même...) Quant à l'heure modifiée par FileTouch, il va falloir que je regarde ça de plus près. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Sep 2012 - 14:58 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 15:08 | |
| Eh bien ça me paraît correct, j'ai exactement la même chose chez moi, qu'est-ce donc qui te choque ? (à part je le répète le caption du Form 0 dont la partie inférieure est tronquée, et ça c'est un phénomène connu: quand on passe du Border_Normal au Border_Small la position du texte n'est pas réajustée en vertical).
@Nardo Pour ton problème de FileTouche, je ne vois pas... j'ai vérifié mes dates/heures et tout est correct, j'ai refait des essais avec d'autres fichiers et ça marche... tu as bien coché la case 'Forcer date et heure d'origine' et décoché l'autre (où on force la date à une valeur donnée) ? c'est vrai que c'est soit l'une, soit aucune, mais pas les deux en même temps ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Sep 2012 - 15:14 | |
| Je ne travail jamais avec border small donc je pensais que tu avais un souci dans les marges... ...autant pour moi | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 15:31 | |
| Moi, pas de souci, sauf esthétique, c'est Panoramic qui en a un, mais c'est bénin. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 16:50 | |
| Hello JL35, Pour les EXIF, il y a bien ExifTool mais cela fait rajouter un executable de plus... J'ai pas encore bien regardé comment il fonctionnait... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ajouter des légendes à des photos Mar 25 Sep 2012 - 17:18 | |
| Bonjour Nardo, oui je le connais, mais si c'est juste pour l'extraction des exifs IrfanView me convient puisqu'il sert aussi à d'autres choses (conversion bmp->jpg notamment). Par contre je ne crois pas qu'il soit possible de rajouter des exifs à un fichier jpg lambda... Il aurait fallu pouvoir travailler directement dans le jpg et le réécrire, mais si on passe par du bmp on perd tout.
Je crois que j'ai un logiciel qui permet d'écrire du texte dans une image (donc dans le jpg), je vais regarder, mais là ce n'est plus du Panoramic, on se contente d'écrire la ligne de commande.
J'ai retrouvé, ça s'appelle Text2img.exe, c'est payant (mais pas cher), il y a assez longtemps que je ne l'ai pas utilisé mais ça permet d'écrire du texte dans l'image, ou dans une image uniforme créée, et ça peut se lancer en ligne de commande (donc depuis Panoramic). Je pense que ça doit garder les exifs, mais il faut que je vérifie. Tu me diras si ça t'intéresse, je te donnerai les éléments.
PS après essai, Text2img ne reporte pas les exifs dans le fichier résultat, hélas... (en plus d'ExifTool tu as ExifLoad, ExifRead et ExifTags)
rePS j'ai trouvé un logiciel (freeware) qui permet de recopier les exifs du fichier d'origine dans le fichier résultat (comme ici), j'ai essayé, ça marche, mais malheureusement pas en ligne de commande, donc pas depuis Panoramic, c'est à faire après coup, et ça peut se faire par lots.
Je cherchais midi à quatorze heures, mais ExifTool semble faire tout ça très bien, et en ligne de commande en plus, la syntaxe a l'air assez compliquée, mais je regarde de plus près, ça vaudra sans doute le coup de l'intégrer (enfin l'appel, comme module externe).
Dernière édition par JL35 le Mar 25 Sep 2012 - 18:15, édité 1 fois | |
| | | Contenu sponsorisé
| Sujet: Re: Ajouter des légendes à des photos | |
| |
| | | | Ajouter des légendes à des photos | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |