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 |
|
|
| Texte sur image | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Texte sur image Sam 14 Jan 2017 - 21:54 | |
| Apposition d'un texte quelconque sur une image quelconque (euh... pas toujours !). Le problème c'est d'écrire le texte avec fond transparent, pour voir l'image à travers. Vous me direz qu'il y a déjà des logiciels qui font ça très bien, mais bon... J'ai déjà fait quelque chose comme ça, mais en transférant le texte pixel par pixel sur l'image, ce qui est extrêmement long. Là j'ai utilisé les propriétés des sprites, avec leur fond transparent (couleur 0,0,0). Évidemment si la couleur du texte demandée est noire, je la transforme en 5,5,5 pour qu'il ne soit pas transparent lui aussi ! La contrainte c'est que l'image doit être entièrement visible à l'écran (donc de taille inférieure) parce qu'on ne sait pas sauvegarder un Scene2d avec ses sprites dans un fichier (c'était promis par Jack il y a quelque temps: instruction SNAPSHOT, mais ce n'est pas venu), alors je le fais par capture d'écran. Le picture donné en paramètre doit être directement sous Form 0, sinon il faudrait ajouter le parent en paramètre de la sub et en tenir compte. Et le total est infiniment plus rapide que le pixel par pixel. C'est sous la forme d'une Sub: - Code:
-
' Texte_sur_Image.bas : Texte sur image LABEL Chf,Chc,Chc1,Chp,Chp1,Appliq,Deplace DIM f$,fr$,x%,y%,rc$,w%,h%,wc%,hc%,w0%,h0%,wl%,wi%,hi%,et%,ed1%,ed2% DIM i%,j%,k%,a$,ed%,m%,p%,fp%,fc%,pc%,er%,en%,ckt%,cke%,ckg%,pm%,bd%,ro DIM po$,sz%,r%,g%,b%,coul%,attr%,RL$ rc$ = CHR$(13)+CHR$(10) f$ = "C:\GRAPH\JPG\goldgate.jpg" fr$ = "C:\TEMP\Result.bmp" IF FILE_EXISTS(fr$) = 1 THEN FILE_DELETE fr$ DATA 0,0,0,0,0,128,0,128,0,0,128,128,128,0,0,128,0,128,128,64,0,192,192,192 DATA 128,128,128,0,0,255,0,255,0,0,255,255,255,0,0,255,0,255,255,255,0,255,255,255
w% = 720: h% = 540: ' dimensions maxi de l'aperçu wl% = 250 BORDER_SMALL 0 wc% = WIDTH(0)-WIDTH_CLIENT(0): hc% = HEIGHT(0)-HEIGHT_CLIENT(0) w0% = w%+wl%+wc%: h0% = h%+hc% WIDTH 0,w0%: HEIGHT 0,h0%: COLOR 0,190,255,255 FONT_NAME 0,"Arial": FONT_BOLD 0: CAPTION 0," - TEXTE SUR IMAGE -" PICTURE 1: LEFT 1,wl%: WIDTH 1,w%: HEIGHT 1,h%: STRETCH_ON 1 ON_CLICK 1,Appliq OPEN_DIALOG 2: FILTER 2,"Images JPG, BMP|*.bmp;*.jpg" i% = 10: ALPHA i%: TOP i%,2: LEFT i%,5: CAPTION i%,"Image de fond (Jpg, Bmp) :" i%=i%+1: EDIT i%: TOP i%,TOP(i%-1)+15: LEFT i%,2: WIDTH i%,wl%-4: ed1% = i% FONT_BOLD_OFF i%: FONT_NAME i%,"Consolas": FONT_SIZE i%,10: ON_CLICK i%,Chf i%=i%+1: ALPHA i%: TOP i%,TOP(i%-1)+25: LEFT i%,5: CAPTION i%,"Image résultat (Bmp) :" i%=i%+1: EDIT i%: TOP i%,TOP(i%-1)+15: LEFT i%,2: WIDTH i%,wl%-4: ed2% = i% FONT_BOLD_OFF i%: FONT_NAME i%,"Consolas": FONT_SIZE i%,10: ON_CLICK i%,Chf TEXT i%,fr$
i%=i%+1: ALPHA i%: TOP i%,TOP(i%-1)+20: FONT_COLOR i%,255,0,0: FONT_BOLD i% CAPTION i%," "+STRING$(22,CHR$(151)) i%=i%+1: CHECK i%: TOP i%,TOP(i%-1)+15: LEFT i%,20: CAPTION i%,"TEXTE :": ckt%=i% MARK_ON ckt% i%=i%+1: ALPHA i%:TOP i%,TOP(ckt%)+18: LEFT i%,10 CAPTION i%,"Police Taille Couleur" i%=i%+1: EDIT i%: TOP i%,TOP(i%-1)+15: LEFT i%,2: WIDTH i%,150: TEXT i%,"Arial": p%=i% ON_CLICK p%,Chp i%=i%+1: SPIN i%: TOP i%,TOP(i%-1): LEFT i%,WIDTH(i%-1)+10: WIDTH i%,42 MIN i%,6: MAX i%,255: POSITION i%,12 i%=i%+1: FORM i%: HIDE i%: BORDER_HIDE i%: TOP i%,TOP(0)+TOP(p%)+50: LEFT i%,LEFT(0)+10 WIDTH i%,wl%: HEIGHT i%,600: fp% = i% i%=i%+1: LIST i%: PARENT i%,fp%: FULL_SPACE i%: FONT_NAMES_LOAD i%: ON_CLICK i%,Chp1 FOR j% = COUNT(i%) TO 1 STEP -1 IF LEFT$(ITEM_READ$(i%,j%),1) = "@" THEN ITEM_DELETE i%,j% NEXT j% i%=i%+1: PICTURE i%: TOP i%,TOP(p%): LEFT i%,LEFT(i%-3)+WIDTH(i%-3)+6: ' couleur txt WIDTH i%,30: HEIGHT i%,20: COLOR i%,0,0,0: ON_CLICK i%,Chc: pc%=i% i%=i%+1: FORM i%: HIDE i%: BORDER_HIDE i%: TOP i%,TOP(0)+TOP(pc%)+50: LEFT i%,LEFT(0)+170 WIDTH i%,80: HEIGHT i%,160: fc% = i%: ' Form palette de couleurs i%=i%+1: PICTURE i%: PARENT i%,fc%: FULL_SPACE i%: HEIGHT i%,160: ON_CLICK i%,Chc1 2D_TARGET_IS i% FOR j% = 0 TO 7 y% = j%*20 FOR k% = 0 TO 1 x% = k%*40: READ r%: READ g%: READ b% 2D_FILL_COLOR r%,g%,b%: 2D_RECTANGLE x%,y%,x%+40,y%+20 NEXT k% NEXT j% i%=i%+1: CHECK i%: TOP i%,TOP(pc%)+28: LEFT i%,20: CAPTION i%,"Gras": ckg%=i% i%=i%+1: CHECK i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+60: CAPTION i%,"Italique" i%=i%+1: CHECK i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+70: CAPTION i%,"Souligné" i%=i%+1: CONTAINER_OPTION i%: TOP i%,TOP(ckg%)+20: LEFT i%,2: WIDTH i%,wl%-4: er%=i% HEIGHT i%,35: CAPTION i%,"Rotation du texte :" i%=i%+1: OPTION i%: PARENT i%,er%: TOP i%,15: LEFT i%,15: CAPTION i%,"Non": MARK_ON i% i%=i%+1: OPTION i%: PARENT i%,er%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+50: CAPTION i%,"90° G" i%=i%+1: OPTION i%: PARENT i%,er%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+55: CAPTION i%,"90° D" i%=i%+1: OPTION i%: PARENT i%,er%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+55: CAPTION i%,"180°"
i%=i%+1: MEMO i%: HEIGHT i%,170: TOP i%,TOP(er%)+40: LEFT i%,2: WIDTH i%,wl%-6: m%=i% i%=i%+1: BUTTON i%: TOP i%,TOP(m%)+HEIGHT(m%)+5: WIDTH i%,25: LEFT i%,40: bd%=i% i%=i%+1: BUTTON i%: TOP i%,TOP(i%-1): WIDTH i%,WIDTH(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)+3 i%=i%+1: BUTTON i%: TOP i%,TOP(i%-1): WIDTH i%,WIDTH(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)+3 i%=i%+1: BUTTON i%: TOP i%,TOP(i%-1): WIDTH i%,WIDTH(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)+3 FOR j% = 0 TO 3 FONT_NAME i%-j%,Wingdings: CAPTION i%-j%,CHR$(234-j%): ON_CLICK i%-j%,Deplace NEXT j% i%=i%+1: SPIN i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+30: WIDTH i%,40: POSITION i%,5
i%=i%+1: ALPHA i%: TOP i%,TOP(i%-1)+HEIGHT(i%-1): FONT_COLOR i%,255,0,0: FONT_BOLD i% CAPTION i%," "+STRING$(22,CHR$(151))
i%=i%+1: CHECK i%: TOP i%,TOP(i%-1)+15: LEFT i%,20: CAPTION i%,"ENCADREMENT :" cke%=i% i%=i%+1: CONTAINER_OPTION i%: HEIGHT i%,20: TOP i%,TOP(cke%)+20: LEFT i%,2: WIDTH i%,wl%-4 CAPTION i%,"Type :": en%=i% i%=i%+1: OPTION i%: PARENT i%,en%: TOP i%,2: LEFT i%,50: MARK_ON i% i%=i%+1: PICTURE i%: HEIGHT i%,30: TOP i%,TOP(en%)+20: LEFT i%,LEFT(i%-1)-20: WIDTH i%,60 COLOR i%,0,0,255 i%=i%+1: OPTION i%: PARENT i%,en%: TOP i%,TOP(i%-2): LEFT i%,LEFT(i%-2)+70 i%=i%+1: PICTURE i%: HEIGHT i%,HEIGHT(i%-2): TOP i%,TOP(i%-2): LEFT i%,LEFT(i%-1)-20 WIDTH i%,WIDTH(i%-2): COLOR i%,0,0,255 2D_TARGET_IS i%-2: 2D_PEN_COLOR 255,255,0: 2D_FILL_OFF: 2D_RECTANGLE 4,4,100,100 2D_TARGET_IS i%: 2D_PEN_COLOR 255,255,0: 2D_FILL_OFF 2D_RECTANGLE 7,7,100,100: 2D_PEN_WIDTH 3: 2D_RECTANGLE 3,3,100,100 ' i%=i%+1: BUTTON i%: TOP i%,TOP(i%-1)+40: LEFT i%,wl%/2-40: CAPTION i%,"Appliquer" ON_CLICK i%,Appliq i%=i%+1: PICTURE i%: HIDE i%: pm%=i%: ' Picture de manoeuvre
END ' ============================================================================== Chf: ' ***** choix image de fond f$ = FILE_NAME$(2): TEXT ed1%,f$ DimJpgBmp(f$): ' dimensions -> wi% x hi% IF wi% > hi% w0% = w%+wl%+wc%: h0% = h%+hc%: IF h0%<530 THEN h0% = 530 WIDTH 0,w0%: HEIGHT 0,h0% HEIGHT 1,50: WIDTH 1,w%: HEIGHT 1,w%*hi%/wi% ELSE h0% = w%+hc%: w0% = wc%+wl%+w%*wi%/hi%: IF h0%<530 THEN h0% = 530 HEIGHT 0,h0%: WIDTH 0,w0% WIDTH 1,50: HEIGHT 1,w%: WIDTH 1,w%*wi%/hi% END_IF ro = wi%/WIDTH(1) FILE_LOAD 1,f$ RETURN ' ============================================================================== Chp: ' ***** choix police de caractères SHOW fp%: TO_FOREGROUND fp% RETURN ' ============================================================================== Chp1: TEXT p%,ITEM_INDEX$(fp%+1) HIDE fp% RETURN ' ============================================================================== Chc: ' ***** choix couleur de caractères SHOW fc%: TO_FOREGROUND fc% RETURN ' ============================================================================== Chc1: x% = MOUSE_X_LEFT_DOWN(fc%+1): y% = MOUSE_Y_LEFT_DOWN(fc%+1) r% = COLOR_PIXEL_RED(fc%+1,x%,y%): g% = COLOR_PIXEL_GREEN(fc%+1,x%,y%) b% = COLOR_PIXEL_BLUE(fc%+1,x%,y%): COLOR pc%,r%,g%,b% HIDE fc% RETURN ' ============================================================================== Appliq: ' ***** Clic dans l'image: insertion du exte x% = MOUSE_X_LEFT_DOWN(1): y% = MOUSE_Y_LEFT_DOWN(1) f$ = TEXT$(ed1%): IF FILE_EXISTS(f$) = 0 THEN RETURN IF FILE_EXISTS(fr$)=1 THEN FILE_DELETE fr$ IF CHECKED(ckt%) = 1 AND f$<>"" AND COUNT(m%) > 0 po$ = TEXT$(p%): sz% = POSITION(p%+1) r% = COLOR_PIXEL_RED(pc%,5,5): g% = COLOR_PIXEL_GREEN(pc%,5,5) b% = COLOR_PIXEL_BLUE(pc%,5,5): coul%=(r%*256+g%)*256+b% attr% = 0: IF CHECKED(ckg%) = 1 THEN attr% = 1 IF CHECKED(ckg%+1) = 1 THEN attr% = attr%+2 IF CHECKED(ckg%+2) = 1 THEN attr% = attr%+4 a$ = "" FOR i% = 1 TO COUNT(m%) a$=a$+ITEM_READ$(m%,i%): IF i%<COUNT(m%) THEN a$ = a$+rc$ NEXT i% x% = x%*ro: y% = y%*ro RL$ = "" IF CHECKED(er%+2) = 1 THEN RL$ = "L" IF CHECKED(er%+3) = 1 THEN RL$ = "R" IF CHECKED(er%+4) = 1 THEN RL$ = "RL" Txt2Img(f$,fr$,x%,y%,a$,po$,sz%,attr%,coul%,RL$) END_IF IF CHECKED(cke%) = 1 WIDTH pm%,wi%: HEIGHT pm%,hi% IF FILE_EXISTS(fr$) = 1 FILE_LOAD pm%,fr$ ELSE FILE_LOAD pm%,f$ END_IF et% = 3*wi%/w%: IF et%>20 THEN et% = 20 2D_TARGET_IS pm%: 2D_PEN_COLOR 255,255,0: 2D_PEN_WIDTH et%: 2D_FILL_OFF IF CHECKED(en%+1) = 1 i% = et%*2: 2D_RECTANGLE i%,i%,wi%-i%,hi%-i% ELSE IF CHECKED(en%+3) = 1 i% = et%*5: 2D_RECTANGLE i%,i%,wi%-i%,hi%-i% i% = et%*2: IF i%>20 THEN i%=20 2D_PEN_WIDTH i% i% = et%*2: 2D_RECTANGLE i%,i%,wi%-i%,hi%-i% END_IF END_IF FILE_SAVE pm%,fr$ END_IF FILE_LOAD 1,fr$ RETURN ' ============================================================================== Deplace: ' ***** Clic sur les flèches de positionnement précis i% = NUMBER_CLICK: j% = POSITION(bd%+4) IF i% = bd% THEN x% = x%-j% IF i% = bd%+1 THEN x% = x%+j% IF i% = bd%+2 THEN y% = y%-j% IF i% = bd%+3 THEN y% = y%+j% Txt2Img(f$,fr$,x%,y%,a$,po$,sz%,attr%,coul%,RL$) FILE_LOAD 1,fr$ RETURN ' ============================================================================== SUB Txt2Img(f$,fr$,x%,y%,txt$,fnt$,sz%,attr%,coul%,RL$) ' Apposition d'un texte txt$ sur le fichier image f$ (jpg ou bmp) ' en x%,y% de l'image, police fnt$, taille sz%, enrichissements attr% ' (B=1 I=2 U=4) couleur coul% (=65536*R + 256*G + B) ' Rotation du texte RL$: "L" 90° G, "R" 90° D, "RL" 180° ' Résultat dans le fichier image fr$ (bmp) DIM_LOCAL n2d%,prt%,fm$,fm1$,s2%,p1%,im%,rc$,r%,g%,b%,yt%,w%,h%,k%,a$,wi%,hi% DIM_LOCAL scr$,rt$,q$: q$ = CHR$(34) n2d% = NUMBER_2D_TARGET: prt% = NUMBER_PRINT_TARGET fm$ = "C:\TEMP\Provy.bmp" fm1$ = "C:\TEMP\Provy1.bmp" scr$ = "C:\TEMP\Vbscript.vbs" PICTURE 1099: HIDE 1099: FILE_LOAD 1099,f$: FILE_SAVE 1099,fm$: DELETE 1099 FILEBIN_OPEN_READ 1,fm$ FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 s2% = 950: SCENE2D s2%: TOP s2%,0: LEFT s2%,0: WIDTH s2%,wi%: HEIGHT s2%,hi%: HIDE s2% FILE_LOAD s2%,fm$: FILE_DELETE fm$ SPRITE s2% p1% = s2%+1: PICTURE p1%: HIDE p1%: WIDTH p1%,1200: HEIGHT p1%,1600: ' pict. texte im% = p1%+1: IMAGE im% rc$ = CHR$(13)+CHR$(10) FONT_NAME p1%,fnt$: FONT_SIZE p1%,sz% IF BIN_AND(attr%,1) = 1 THEN FONT_BOLD p1% IF BIN_AND(attr%,2) = 2 THEN FONT_ITALIC p1% IF BIN_AND(attr%,4) = 4 THEN FONT_UNDERLINE p1% r%=INT(coul%/65536): g%=BIN_AND(coul%,255*256)/256: b%=BIN_AND(coul%,255) IF r% = 0 AND g% = 0 AND b% = 0 THEN r% = 5: g% = 5: b% = 5 FONT_COLOR p1%,r%,g%,b%: 2D_TARGET_IS p1%: COLOR p1%,0,0,0: 2D_FILL_COLOR 0,0,0 w% = 0: k% = LEN(txt$): PRINT_TARGET_IS p1%: h% = TEXT_HEIGHT(txt$,p1%): yt% = 0 WHILE k%>0 k% = INSTR(txt$,rc$) IF k%>0 a$ = LEFT$(txt$,k%-1): txt$ = RIGHT_POS$(txt$,k%+2) ELSE a$ = txt$: txt$ = "" END_IF k% = TEXT_WIDTH(a$,p1%): IF k%>w% THEN w% = k%: ' largeur totale PRINT_LOCATE 0,yt%: PRINT a$: yt% = yt%+h% k% = LEN(txt$) END_WHILE h% = yt%: WIDTH p1%,w%: HEIGHT p1%,h% IF RL$ <> "": ' rotation texte FILE_SAVE p1%,fm$: IF FILE_EXISTS(fm1$) = 1 THEN FILE_DELETE fm1$ rt$ = "270": IF UPPER$(RL$)="R" THEN rt$ = "90" IF UPPER$(RL$)="RL" THEN rt$ = "180" FILE_OPEN_WRITE 9,scr$ FILE_WRITELN 9,"Dim Img 'As ImageFile" FILE_WRITELN 9,"Dim IP 'As ImageProcess" FILE_WRITELN 9,"Set Img = CreateObject("+q$+"WIA.ImageFile"+q$+")" FILE_WRITELN 9,"Set IP = CreateObject("+q$+"WIA.ImageProcess"+q$+")" FILE_WRITELN 9,"Img.LoadFile "+q$+fm$+q$ FILE_WRITELN 9,"IP.Filters.Add IP.FilterInfos("+q$+"RotateFlip"+q$+").FilterID" FILE_WRITELN 9,"IP.Filters(1).Properties("+q$+"RotationAngle"+q$+") = "+rt$ FILE_WRITELN 9,"Set Img = IP.Apply(Img)" FILE_WRITELN 9,"Img.SaveFile "+q$+fm1$+q$ FILE_WRITELN 9,"WScript.Quit(0)" FILE_CLOSE 9 EXECUTE_WAIT "Wscript.exe " + scr$: ' Exécution du script FILE_DELETE scr$: FILE_DELETE fm$ CLS: FILE_LOAD p1%,fm1$: FILE_DELETE fm1$ IF RL$="L" OR RL$="R" THEN h% = w%: w% = yt%: ' rotation 90° G ou D END_IF ' Recopie du picture de travail p1% dans le sprite 2D_IMAGE_COPY im%,0,0,w%-1,h%-1 SPRITE_IMAGE_LOAD s2%,im%: SPRITE_POSITION s2%,x%,y% SNAPSHOT s2%,fr$ DELETE s2% 2D_TARGET_IS n2d%: PRINT_TARGET_IS prt%: DELETE p1%: DELETE im% END_SUB ' ============================================================================== SUB DimJpgBmp(f$) ' Image JPG ou BMP exclusivement, dimensions dans wi% et hi% DIM_LOCAL fm$: fm$ = "Z:\Provy.bmp" PICTURE 1099: HIDE 1099: FILE_LOAD 1099,f$: FILE_SAVE 1099,fm$: DELETE 1099 FILEBIN_OPEN_READ 1,fm$ FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 FILE_DELETE fm$ END_SUB ' ============================================================================== Edit 15/01 voir ci-dessous Edit 18/01 suite aux nouvelles commandes, voir plus loin Edit 21/01 ajout de fonctions un peu plus élaborées
Dernière édition par JL35 le Sam 21 Jan 2017 - 14:42, édité 4 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Texte sur image Sam 14 Jan 2017 - 22:04 | |
| Bavo JL35 | |
| | | Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Texte sur image. Dim 15 Jan 2017 - 8:26 | |
| Bonjour. Notre ami Klaus a créé une fonction à ce sujet, que j'utilise comme suit: - Code:
-
sub ecrire_sur_image(param1%, px%, py%, param2$) dim_local i%, hnd%, r%, g%, b%, degre% dim_local coul%, font$, text$, attrib%, pos% dim_local aBold% : aBold% = 1 dim_local aItalic% : aItalic% = 0 dim_local aUnder% : aUnder% = 0 dim_local aStrike% : aStrike% = 0 dim_local aSize% : aSize% = 8 dim_local aRotate% : aRotate% = 65536
hnd%=handle_canvas(param1%) r%=255 g%=255 b%=255 coul%=(b%*256+g%)*256+r% font$="Times New Roman" text$=param2$ degre%=0 attrib%=aBold%+aUnder%+aItalic%+aSize%*36+aRotate%*degre% pos%=px%+py%*65536 res%=dll_call6("WriteTextOverPicture",hnd%,pos%,adr(text$),adr(font$),attrib%,coul%) 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: Texte sur image Dim 15 Jan 2017 - 12:41 | |
| - Pedro Alvarez a écrit:
- Notre ami Klaus a créé une fonction à ce sujet,
Ceci n’enlève rien au mérite de JL35 qui a proposé une autre façon de faire. Merci JL35 pour le partage. C’est toujours utile de voir d’autres manières de coder. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Dim 15 Jan 2017 - 12:57 | |
| @Pedro, Je connais parfaitement cette fonction de Klaus qui marche très bien... Mais ça veut dire que pour un tout petit programme comme celui-ci il faut se trimballer KGF.dll qui fait quand même plus de 1,2M. Parfois on ne peut pas faire autrement, mais je n'y fais appel que quand c'est indispensable, et je suis toujours à la recherche de solutions purement Panoramic, c'est à dire le code, rien que le code, et pas de ressources externes. PS J'ai édité le code pour pouvoir écrire sur des images de taille supérieure à la taille de l'écran (avec Stretch_On). Inconvénient: la sauvegarde du résultat aura une définition limitée à la taille de l'écran. Par exemple, mon image de la Joconde de 2403 x 3591 sera sauvegardée en 755 x 1114 pixels (chez moi, avec mon écran de 1920 x 1200) | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Texte sur image Dim 15 Jan 2017 - 19:23 | |
| - JL35 a écrit:
- qu'on ne sait pas sauvegarder un Scene2d avec ses sprites dans un fichier (c'était promis par Jack il y a quelque temps: instruction SNAPSHOT, mais ce n'est pas venu)
C'est fait. Ce week-end, j'ai codé et testé FILE_SAVE qui enregistre l'image de fond d'un SCENE2D SNAPSHOT qui enregistre (en format bmp pour l'instant) un SCENE2D avec tous ses SPRITEs Elles seront utilisables dans la prochaine version. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Texte sur image Dim 15 Jan 2017 - 19:36 | |
| Ouh ouh, ça bouge... Je suis certain que JL35 saura nous montrer l'utilisation des ces commandes.... En tous cas, c'est encore une avancée supplémentaire. Merci Jack. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Dim 15 Jan 2017 - 22:28 | |
| Merci Jack !
Je rentre seulement maintenant, et c'est une très bonne nouvelle qui va bien me simplifier les choses ! Et qui ouvre des horizons... Youpi ! la vie est belle ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 15 Jan 2017 - 22:55 | |
| Wahou...encore un bond en avant pour Panoramic !
Merci Jack ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Mer 18 Jan 2017 - 12:55 | |
| J'ai intégré la nouvelle commande SNAPSHOT qui simplifie beaucoup la sauvegarde du résultat, et qui en plus supprime la limitation en dimensions de l'image. On peut donc insérer du texte sur n'importe quelle image, et sauvegarder le résultat en bmp. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Texte sur image Mer 18 Jan 2017 - 13:08 | |
| @Merci JL35, J'en conclus que cette nouvelle commande fonctionne parfaitement. Donc tout est prêt pour une version "régulière" de Panoramic.... A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Mer 18 Jan 2017 - 15:05 | |
| Exact Jean Claude, pour moi cette commande correspond tout à fait à ce que j'en attendais, et elle fonctionne sans problème. J'ai eu encore une fois ce plantage avec écran 'blanc', je ne sais pas pourquoi, heureusement j'ai sauvegardé avant de tout perdre...il me semble, sans aucune certitude, que c'est quand on reste trop longtemps en attente d'un événement dans un cas bien particulier... et j'ai bien conscience que ce que je dis est plutôt vague ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 18 Jan 2017 - 16:20 | |
| En corrigeant l' oubli de coloration des commentaires. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Mer 18 Jan 2017 - 16:57 | |
| Ça aussi, mais c'est quand même moins gênant ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Texte sur image Mer 18 Jan 2017 - 17:56 | |
| Ho! que si que c'est gênant !
Les commentaires sont de la même couleur que le texte, et on ne peut pas changer ni l'un, ni l'autre. De plus on ne peut pas non plus mettre les commentaires en gras pour tenter de les différencier. C'est assez handicapant pour la lisibilité du code.
Bon, en attendant, pour les codes qui n'utilisent pas SNAPSHOT, on peut toujours utiliser la version précédente.
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Sam 21 Jan 2017 - 15:00 | |
| Je reviens au texte sur image: J'en ai fait un programme à part entière, avec utilisation de la sub Txt2Img (mise à jour: rotations).
On peut donc écrire un texte sur une image de dimensions quelconques: - on charge une image quelconque (jpg, bmp), l'aperçu s'affiche à droite. - on prépare le texte dans le memo, on lui applique ses caractéristiques (police, taille, couleur, enrichissements classiques) - On peut appliquer une rotation au texte: 90° à gauche ou à droite, ou 180°. - on clique dans l'image pour insérer le texte à l'emplacement cliqué - on peut ensuite déplacer le texte à l'aide des 4 boutons flèches, d'une valeur choisie. - on peut appliquer un encadrement à l'image, mais c'est un peu gadget.
Le résultat est automatiquement sauvegardé dans le fichier indiqué dans 'Image résultat', en image bmp.
Et tout en Panoramic, sans ressources externes (un script vbs est intégré à la sub, pour les rotations). | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Texte sur image Sam 21 Jan 2017 - 17:20 | |
| @JL35, Tu pourrais, quasiment, en faire un petit programme genre PicPick, Photofiltre, en ajoutant les autres codes que tu as déjà réalisé. En tous cas, c'est une belle démonstration des nouvelles commande. @Jack, si tu passes par ici. J'ai constaté un détournement d'un mot (parfaitement) dans une réponse que j'ai faite légèrement au dessus dans ce sujet. Quand j'ai écris ce texte, je n'ai mis aucun lien sous ce mot. Aujourd’hui, je m'aperçois que ce mot dirige le lecteur vers un site qui n'a rien à voir avec Panoramic. Je précise que je n'y suit pour rien et que c'est bien le problème. Si tu peux voir la chose, car cela pourrait porter à quiproquos. Une précision: ce lien existe que si l'on est pas connecté. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Sam 21 Jan 2017 - 17:44 | |
| Merci Jean Claude ! Cela dit je n'ai pas l'intention de refaire un Photoshop (en mieux), mes ambitions sont plus modestes Pour ton lien, c'est peut-être uniquement chez toi, parce que, connecté ou pas, je ne vois de lien nulle part dans tes messages, en particulier dans celui dont tu parles... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Texte sur image Sam 21 Jan 2017 - 18:05 | |
| | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Texte sur image Sam 21 Jan 2017 - 21:00 | |
| Le mot "parfaitement" de tes 3 derniers posts, ainsi que le mot "Photoshop" renvoient vers des liens.
Il apparaît "Link added by VigLink" si je laisse dessus la souris sans cliquer.
Mon antivirus me signale "Une connexion SSL avec un certificat invalide a été detectée" et me demande d'interrompre la connexion.
Je vais signaler tout cela à l'administration du forum (ForumActif). _________________ username : panoramic@jack-panoramic password : panoramic123
Dernière édition par Jack le Sam 21 Jan 2017 - 21:18, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Texte sur image Sam 21 Jan 2017 - 21:16 | |
| Ouf, je me suis demandé, un instant, si je n'était pas parano... Merci pour ton intervention auprès de l'administration du forum car c'est ennuyeux de ne pas se sentir en sécurité. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Texte sur image Sam 21 Jan 2017 - 21:56 | |
| Oui, c'est curieux et pas très rassurant, heureusement Jack est intervenu.
Pour le texte sur image, comme je disais ci-dessus j'ai ajouté un script vbs pour faire pivoter le texte par angles de 90°. A ma connaissance, on ne peut pas faire pivoter un sprite... dommage... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Texte sur image Dim 22 Jan 2017 - 10:23 | |
| Je pense que la rotation du sprite sera rajout avec les autres fonctions que Jack avait ajouté dans les petits frères de Panoramic | |
| | | Contenu sponsorisé
| Sujet: Re: Texte sur image | |
| |
| | | | Texte sur image | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |