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
» trop de fichiers en cours
Écrire un texte dans une image Emptypar lepetitmarocain Aujourd'hui à 08:43

» Aide de PANORAMIC
Écrire un texte dans une image Emptypar papydall Aujourd'hui à 02:21

» Je teste PANORAMIC V 1 beta 1
Écrire un texte dans une image Emptypar papydall Aujourd'hui à 02:17

» select intégrés
Écrire un texte dans une image Emptypar jjn4 Hier à 16:33

» PANORAMIC V 1
Écrire un texte dans une image Emptypar Klaus Hier à 07:53

» bouton dans autre form que 0
Écrire un texte dans une image Emptypar leclode Lun 06 Mai 2024, 11:59

» KGF_dll - nouvelles versions
Écrire un texte dans une image Emptypar Klaus Lun 06 Mai 2024, 09:41

» Gestion d'un système client-serveur.
Écrire un texte dans une image Emptypar Klaus Lun 06 Mai 2024, 08:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Écrire un texte dans une image Emptypar Froggy One Jeu 02 Mai 2024, 09:16

» @Jack
Écrire un texte dans une image Emptypar Jack Mar 30 Avr 2024, 18:40

» Une calculatrice en une ligne de programme
Écrire un texte dans une image Emptypar jean_debord Dim 28 Avr 2024, 06:47

» Form(résolu)
Écrire un texte dans une image Emptypar leclode Sam 27 Avr 2024, 15:59

» Bataille navale SM
Écrire un texte dans une image Emptypar jjn4 Ven 26 Avr 2024, 15:39

» Les maths du crocodile
Écrire un texte dans une image Emptypar jean_debord Jeu 25 Avr 2024, 08:37

» Naissance de Crocodile Basic
Écrire un texte dans une image Emptypar jean_debord Jeu 25 Avr 2024, 06:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Écrire un texte dans une image

Aller en bas 
4 participants
AuteurMessage
JL35




Nombre de messages : 7095
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, 16: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 : 5948
Age : 69
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, 14:43

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




Nombre de messages : 7095
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, 15: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 : 2695
Date d'inscription : 13/09/2009

Écrire un texte dans une image Empty
MessageSujet: +++   Écrire un texte dans une image EmptyLun 16 Aoû 2010, 17: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 : 7095
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, 22: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 : 55
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, 09: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
-
» Texte sur image
» Camoufler un fichier texte dans une image
» Récupérer l'image d'un IMAGE dans un picture
» Exemple d'une nouvelle version d'un GRID
» Bulle de texte sur image

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: