FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Texte sur image Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Texte sur image Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Texte sur image Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Texte sur image Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Texte sur image Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Texte sur image Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Texte sur image Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Texte sur image Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Texte sur image Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Texte sur image Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Texte sur image Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Texte sur image Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Texte sur image Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Texte sur image Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Texte sur image Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-55%
Le deal à ne pas rater :
Friteuse sans huile – PHILIPS – Airfryer HD9200/90 Série 3000
49.99 € 109.99 €
Voir le deal

 

 Texte sur image

Aller en bas 
+3
Pedro
Jicehel
JL35
7 participants
AuteurMessage
JL35




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

Texte sur image Empty
MessageSujet: Texte sur image   Texte sur image EmptySam 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... Very Happy
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
Texte sur image Txtimg10

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
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 14 Jan 2017 - 22:04

Bavo JL35 Wink
Revenir en haut Aller en bas
Pedro

Pedro


Nombre de messages : 1594
Date d'inscription : 19/01/2014

Texte sur image Empty
MessageSujet: Texte sur image.   Texte sur image EmptyDim 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
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyDim 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.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyDim 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) Crying or Very sad
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyDim 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.

_________________
Texte sur image Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyDim 15 Jan 2017 - 19:36

Ouh ouh, ça bouge...

Je suis certain que JL35 saura nous montrer l'utilisation des ces commandes.... Very Happy

En tous cas, c'est encore une avancée supplémentaire.

Merci Jack.
Revenir en haut Aller en bas
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyDim 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 !
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Texte sur image Empty
MessageSujet: re   Texte sur image EmptyDim 15 Jan 2017 - 22:55

Wahou...encore un bond en avant pour Panoramic !

Merci Jack !
Revenir en haut Aller en bas
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyMer 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.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyMer 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.... Very Happy

A+
Revenir en haut Aller en bas
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyMer 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 ! Surprised
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Texte sur image Empty
MessageSujet: re   Texte sur image EmptyMer 18 Jan 2017 - 16:20

En corrigeant l' oubli de coloration des commentaires.
Laughing
Revenir en haut Aller en bas
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyMer 18 Jan 2017 - 16:57

Ça aussi, mais c'est quand même moins gênant ! Very Happy
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyMer 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+
Revenir en haut Aller en bas
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 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).
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 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é. Very Happy
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+
Revenir en haut Aller en bas
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 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 Very Happy

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...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 21 Jan 2017 - 18:05

C'est curieux car le mot "parfaitement" n'est plus un lien depuis que j'ai signalé l'affaire il y a environ 1 heure.
Question Question Question
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 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).

_________________
Texte sur image Webdav username : panoramic@jack-panoramic password : panoramic123


Dernière édition par Jack le Sam 21 Jan 2017 - 21:18, édité 1 fois
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 21 Jan 2017 - 21:16

Ouf, je me suis demandé, un instant, si je n'était pas parano... Very Happy

Merci pour ton intervention auprès de l'administration du forum car c'est ennuyeux de ne pas se sentir en sécurité.

A+

Revenir en haut Aller en bas
JL35




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

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptySam 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...
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image EmptyDim 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
Revenir en haut Aller en bas
Contenu sponsorisé





Texte sur image Empty
MessageSujet: Re: Texte sur image   Texte sur image Empty

Revenir en haut Aller en bas
 
Texte sur image
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Camoufler un fichier texte dans une image
» Annoter une image avec des bulles de texte
» Bulle de texte sur image
» Écrire un texte dans une image
» Cryptage d'un texte Ascii en image bmp

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: