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.
Écrire un texte dans une image Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Écrire un texte dans une image Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Écrire un texte dans une image Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Écrire un texte dans une image Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Écrire un texte dans une image Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Écrire un texte dans une image Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Écrire un texte dans une image Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Écrire un texte dans une image Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Écrire un texte dans une image Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Écrire un texte dans une image Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Écrire un texte dans une image Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Écrire un texte dans une image Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Écrire un texte dans une image Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Écrire un texte dans une image Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Écrire un texte dans une 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
Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

 

 Écrire un texte dans une image

Aller en bas 
4 participants
AuteurMessage
JL35




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

Écrire un texte dans une image Empty
MessageSujet: Écrire un texte dans une image   Écrire un texte dans une image EmptyDim 15 Aoû 2010 - 18:33

Le sujet avait déjà été abordé il y a quelque temps, mais j'ai un peu revu ma copie.
Comme le titre l'indique, il s'agit d'écrire un texte (commentaire, référence, date, etc) dans une photo.
La particularité ici c'est de permettre d'écrire le texte avec le fond transparent (ce que ne permet pas normalement le print dans un picture). Dans ce cas, le temps de traitement est plus long, l'écriture se faisant pixel par pixel.
L'image d'origine est jpg ou bmp, le résultat est bmp. Mais comme il faut de toute façon disposer de IrfanView, on peut convertir dans tous les sens.
Écrire un texte dans une image Rafale
Voici le sous-programme, à intégrer n'importe où. Les variables sont locales pour une intégration plus facile, sauf évidemment les paramètres communs (paramètre d'appel et noms des sous-programmes):
Code:
' Text2Img écriture d'un texte dans une image jpg ou bmp
' Le résultat est un fichier bmp (à convertir au besoin).
DIM param$, ini2%, ifv$
LABEL Text2Img
ifv$ = "C:\Progra~1\IrfanView\i_view32.exe "
' exemple d'utilisation du sous-programme:
param$ = "-o:C:\Graph\Jpg\rafale.jpg -f:Z:\Result.bmp -p:Times New Roman -s:28"
param$ = param$ + " -c:8388736 -b:-1 -x:100,500 -t:Quelle rafale !"
GOSUB Text2Img
EXECUTE_WAIT ifv$ + "Z:\Result.bmp": ' pour voir le résultat
TERMINATE
END


Text2Img:
' ***** A DECLARER DANS LE PROGRAMME PRINCIPAL: *****
' DIM param$, ini2%, ifv$
' LABEL Text2Img
' ifv$ = "C:\Progra~1\IrfanView\i_view32.exe "
' ***************************************************
' paramètres (dans param$):
' -o:fichier origine
' -f:fichier résultat (bmp)
' -p:police de caractères
' -s:taille des caractères
' -c:couleur des caractères (entier de la forme r*256*256+g*256+b)
' -b:couleur du fond (ou -1 si fond du texte transparent)
' -x:coordonnées du texte, en pixels (forme x,y)
' -t:texte à écrire
IF ini2% = 0
    DIM ki%,kj%,or9$,fr9$,po9$,sz9%,ct9,cb9,xt9%,yt9%,tx9$,br9$,fpr9$,wi9%,hi9%
    DIM bl9%,gr9%,re9%
    LABEL Paramiss, Paramass, Anapar
    ini2% = 1
END_IF
' Analyse des paramètres (tous sont nécessaires)
ki% = INSTR(param$, "-o:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: or9$ = br9$
ki% = INSTR(param$, "-f:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: fr9$ = br9$
ki% = INSTR(param$, "-p:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: po9$ = br9$
ki% = INSTR(param$, "-s:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: sz9% = VAL(br9$)
ki% = INSTR(param$, "-c:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: ct9 = VAL(br9$)
ki% = INSTR(param$, "-b:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: cb9 = VAL(br9$)
ki% = INSTR(param$, "-x:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: ki% = INSTR(br9$,",")
xt9%=VAL(LEFT$(br9$,ki%-1)):yt9%=VAL(MID$(br9$,ki%+1,LEN(br9$)-ki%))
ki% = INSTR(param$, "-t:"): IF ki% < 1 THEN GOTO Paramiss
GOSUB Anapar: tx9$ = br9$
' dimensions de l'image...
fpr9$ = "Z:\Infoimg.txt"
EXECUTE_WAIT ifv$ + or9$ + " /info=" + fpr9$
FILE_OPEN_READ 9, fpr9$
REPEAT: FILE_READLN 9, br9$: UNTIL LEFT$(br9$, 5) = "Image"
FILE_CLOSE 9: FILE_DELETE fpr9$
br9$ = MID$(br9$, 20, LEN(br9$)-19)
ki% = INSTR(br9$, "x"): wi9% = VAL(LEFT$(br9$, ki%-2))
br9$ = MID$(br9$, ki%+2, LEN(br9$)-1)
ki% = INSTR(br9$, " "): hi9% = VAL(LEFT$(br9$, ki%-1))
PICTURE 80: LEFT 80, -1900: WIDTH 80, wi9%: HEIGHT 80, hi9%
FILE_LOAD 80, or9$
bl9% = BIN_AND(ct9, 255)
gr9% = (BIN_AND(ct9, 255*256))/256
re9% = (BIN_AND(ct9, 255*256*256))/65536
PRINT_TARGET_IS 80: FONT_NAME 80,po9$: FONT_SIZE 80,sz9%
FONT_COLOR 80,re9%,gr9%,bl9%
2D_TARGET_IS 80
IF cb9 <> -1
    bl9% = BIN_AND(cb9, 255)
    gr9% = (BIN_AND(cb9, 255*256))/256
    re9% = (BIN_AND(cb9, 255*256*256))/65536
    2D_FILL_COLOR re9%,gr9%,bl9%
    PRINT_LOCATE xt9%,yt9%: PRINT tx9$
ELSE
    ' fond du texte transparent, dessin point par point
    PICTURE 81: TOP 81,-200: WIDTH 81, 640: COLOR 81, 1, 1, 1
    PRINT_TARGET_IS 81: FONT_NAME 81,po9$: FONT_SIZE 81,sz9%
    FONT_COLOR 81,0,0,0: PRINT tx9$
    2D_PEN_COLOR re9%,gr9%,bl9%
    FOR kj% = 0 TO 100
        bl9%=COLOR_PIXEL_BLUE(81,0,kj%)
        gr9%=COLOR_PIXEL_GREEN(81,0,kj%)
        re9%=COLOR_PIXEL_RED(81,0,kj%)
        IF (bl9%=1 AND gr9%=1 AND re9%=1) THEN EXIT_FOR: ' fin v du texte
        FOR ki% = 0 TO 639
            bl9%=COLOR_PIXEL_BLUE(81,ki%,kj%)
            gr9%=COLOR_PIXEL_GREEN(81,ki%,kj%)
            re9%=COLOR_PIXEL_RED(81,ki%,kj%)
            IF (bl9%=1 AND gr9%=1 AND re9%=1) THEN EXIT_FOR: ' fin h du texte
            IF (bl9%<>255 AND gr9%<>255 AND re9%<>255)
                2D_POINT xt9%+ki%,yt9%+kj%
            END_IF
        NEXT ki%
    NEXT kj%
    PRINT_TARGET_IS 0: DELETE 81
END_IF
FILE_SAVE 80, fr9$
2D_TARGET_IS 0: PRINT_TARGET_IS 0: DELETE 80
GOTO Paramass
Paramiss:
MESSAGE "Text2Img: Au moins un paramètre manquant !"
Paramass:
RETURN
Anapar:
br9$=MID$(param$, ki%+3, LEN(param$)-ki%-2)
ki% = INSTR(br9$, " -")
IF ki% > 0
    br9$ = TRIM$(LEFT$(br9$, ki%-1))
ELSE
    br9$ = TRIM$(br9$)
END_IF
RETURN
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

Écrire un texte dans une image Empty
MessageSujet: Re: Écrire un texte dans une image   Écrire un texte dans une image EmptyLun 16 Aoû 2010 - 16:43

J'aime bien l'image prise pour la démonstration... Embarassed
Revenir en haut Aller en bas
JL35




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

Écrire un texte dans une image Empty
MessageSujet: Re: Écrire un texte dans une image   Écrire un texte dans une image EmptyLun 16 Aoû 2010 - 17:10

C'est vraiment par hasard Very Happy et ça résume bien la situation ici.
Quand même, Jean Claude, c'est tout ce que tu retiens de mon long exposé ?
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Écrire un texte dans une image Empty
MessageSujet: +++   Écrire un texte dans une image EmptyLun 16 Aoû 2010 - 19:45

C'est une belle performance !
(quoique je n'ai pas réussi à le faire marcher, mais bon)
Mais j'ai beau examiner ton code,
je ne comprends pas comment tu fais ça.
Est-ce que c'est Irfan-View qui fait cette transparence ?
Et si oui, avec quelle fonction ?
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
JL35




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

Écrire un texte dans une image Empty
MessageSujet: Re: Écrire un texte dans une image   Écrire un texte dans une image EmptyMar 17 Aoû 2010 - 0:18

Bizarre si ça ne marche pas chez toi... tu as bien changé les chemins de fichiers dans param$ ? et mis le bon chemin pour IrfanView ?
Mais non ce n'est pas IrfanView qui fait le boulot, c'est moi ! Le principe: j'écris d'abord le texte dans un picture bidon, (picture 81) avec un fond donné (1,1,1), le texte s'écrit noir sur blanc sur ce fond, et je recopie dans l'image destinataire tous les pixels qui ne sont pas blancs, la limite de scrutation étant fixée par la couleur 1,1,1.
Puis le picture 81, devenu inutile, est supprimé.
Tout simplement.
Comme ça, ça ne touche pas le fond de l'image, seuls les pixels 'texte' sont modifiés.

NB on s'aperçoit comme j'ai déjà dit que l'écriture noir sur blanc n'est pas vraiment noire, il y a quelques pixels de couleur par-ci par-là dans les caractères, sans doute pour que ce soit plus joli à l'oeil. Mais il suffit de regarder si c'est blanc ou non blanc.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Écrire un texte dans une image Empty
MessageSujet: Re: Écrire un texte dans une image   Écrire un texte dans une image EmptyMer 18 Aoû 2010 - 11:10

Bonjour,
Un bout de code pour ceux que ça intéresse :
j'ai fait une petite fonction en Panoramic qui renvoi les dimensions d'une image au format JPG. cela evite d'utiliser IrfanView...

Code:

dim JPEG_dim$,JPEG_dim%(6),JPEG_Height%,JPEG_Width%
label JPEG_dim

JPEG_dim$="D:\perso\RESETPLL.jpg"
print JPEG_dim$ : gosub JPEG_dim
if JPEG_dim%(0)=0
  print " --> Largeur:";JPEG_Width%;" Hauteur:";JPEG_Height%
end_if


end

JPEG_dim:
  FILEBIN_OPEN_READ 124,JPEG_dim$
  FILEBIN_POSITION 124,4
  FILEBIN_BLOCK_READ 124,2,JPEG_dim%(0)
  JPEG_dim%(5)=(JPEG_dim%(0)*256)+JPEG_dim%(1)
  FILEBIN_BLOCK_READ 124,5,JPEG_dim%(0)
  JPEG_dim$=chr$(JPEG_dim%(0))+chr$(JPEG_dim%(1))+chr$(JPEG_dim%(2))+chr$(JPEG_dim%(3))
  if JPEG_dim$<>"JFIF"
    JPEG_dim%(0)=message_warning_OK("JPEG_dim: Format de fichier incorrect !")
    FILEBIN_CLOSE 124
    return
  end_if
  JPEG_dim%(2)=255:JPEG_dim%(3)=255: JPEG_dim%(4)=2
  WHILE (JPEG_dim%(2)<>255) or ((JPEG_dim%(3)<>192) and (JPEG_dim%(3)<>194))
    JPEG_dim%(4) = JPEG_dim%(4) + JPEG_dim%(5) + 2
    FILEBIN_POSITION 124,JPEG_dim%(4)
    FILEBIN_BLOCK_READ 124,2,JPEG_dim%(2)
    FILEBIN_BLOCK_READ 124,2,JPEG_dim%(0) :JPEG_dim%(5)=(JPEG_dim%(0)*256)+JPEG_dim%(1)
  END_WHILE
  FILEBIN_READ 124,JPEG_dim%(0)
  FILEBIN_BLOCK_READ 124,2,JPEG_dim%(0): JPEG_Height%=(JPEG_dim%(0)*256)+JPEG_dim%(1)
  FILEBIN_BLOCK_READ 124,2,JPEG_dim%(0): JPEG_Width%=(JPEG_dim%(0)*256)+JPEG_dim%(1)
  FILEBIN_CLOSE 124
  JPEG_dim%(0)=0
RETURN
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Contenu sponsorisé





Écrire un texte dans une image Empty
MessageSujet: Re: Écrire un texte dans une image   Écrire un texte dans une image Empty

Revenir en haut Aller en bas
 
Écrire un texte dans une image
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Ecrire un texte sur une image.
» Camoufler un fichier texte dans une image
» Texte sur image
» Ecrire sur un canvas Panoramic dans une DLL
» Exemple d'une nouvelle version d'un GRID

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: