IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

comment modifier color d'un texte sous forme image


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 8
    Points
    8
    Par défaut comment modifier color d'un texte sous forme image
    salut TM
    comment changer ou modifier couleur d'un partir de texte sous forme image voila l'image 1
    [IMG][/IMG]
    je veux changer couleur d'un partir comme suite image 2
    [IMG][/IMG]
    et puis par exemple image 3
    [IMG][/IMG]

  2. #2
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Bonjour,
    Vous avez en fait deux sous problèmes :
    1. Isoler la phrase.
    2. Modifier sa couleur.


    1. Pour Isoler une phrase, il suffit de déterminer son rectangle englobant. C'est à dire la partie de l'image qui englobe la phrase. Ce rectangle peut être représenté par deux points (X0,Y0) et (Xf,Xf).

    2. Ensuite la modification de la couleur ne se fera uniquement sur le rectangle englobant. Mais c'est une tâche assez délicate car vous n'allez pas modifier tout le rectangle mais uniquement le texte contenu dans le rectangle.
    Tout dépend de la couleur initiale du texte et aussi de la qualité de l'image.
    En supposant que le texte et noir sur blanc, on aura un algo du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    POUR i = x0 A xf
    	POUR j = y0 A yf
    		SI MonImage[i,j]=CouleurInitiale ALORS
    			MonImage[i,j]=Rouge;
    		FIN
    	FIN
    FIN
    Bien entendu l'égalité parfaite entre la couleur du pixel et la couleur initiale sera corrompu par la qualité de l'image... il serai préférable d'utiliser des approximation au lieu de test d'égalité genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Si RVBBleu(MonImage[i,j])<20 ET RVBRouge(MonImage[i,j])<20< ET RVBVert(MonImage[i,j])<20 ALORS // Il s'agit d'une couleur très foncée
    MonImage[i,j]=Rouge;



    Maintenant si vous désirez automatiser complètement la tache 1 : Détection automatique de chaque phrase, je pense que vous n'êtes pas dans le bon forum.
    Essayez plutôt le Forum Traitement d'images
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 8
    Points
    8
    Par défaut
    Salut ,
    Je suis venu à certaines des solutions actuellement.
    1- je fais un forme rectangle sur ma image puis je le changer le coordonnées de cette rectangle pour positionner bien sur le texte puis fait cette code
    FormeRectangle..EffetVisuel=evVoileBleu
    voila l'image

    et pour b_reda31 merci a votre reponse..Je vais tester vos suggestions
    un petite remarque tu as fais MonImage[i,j]=Rouge; est ce que cette variable monimage est un tableau
    a tout façon Je vais tester vos solutions...merci beaucoup b_reda31

  4. #4
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    1- je fais un forme rectangle sur ma image puis je le changer le coordonnées de cette rectangle pour positionner bien sur le texte puis fait cette code
    Oui c'est une bonne idée d'utiliser une forme (un peu transparente) sur l'image afin de permettre à l'utilisateur de choisir lui même le rectangle englobant.
    Dans cette idée, vous pouvez modifier la position et les dimensions de la forme selon les positions du clique et du relâche sur l'objet image.Pour récuperer les positions voir SourisPosX et SourisPosY avec comme paramètre spImage
    Ensuite pour ce qui est du changement de couleur du texte,vous devez parcourir tous les pixels du rectangle, et tester si chaque pixel représente du texte (couleur sombre) ou le fond (couleur clair).
    Pour cela vous pouvez aussi calculer le niveau de gris du pixel (Moyenne des trois composante R,V,B) si le niveau de gris ng est inférieur à un certain seuil alors il s'agit du texte donc le pixel devient rouge, sinon il s'agit du fond alors ne rien faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    MonImage est une Image;
    MonImage=IMG_SansNom1;
     
    i,j sont des entiers;
    ng est un entier;
     
    POUR i = SAI_X0 A SAI_Xf
    	POUR j = SAI_Y0 A SAI_Yf
    		ng = (RVBBleu(MonImage[i,j])+RVBRouge(MonImage[i,j])+RVBVert(MonImage[i,j]))/3;
    		SI ng<SAI_Seuil ALORS
    		MonImage[i,j]=RougeClair;	
    		FIN
     
    		FIN
    FIN
    IMG_SansNom2=MonImage;
    un petite remarque tu as fais MonImage[i,j]=Rouge; est ce que cette variable monimage est un tableau
    Non, MonImage est une variable de type Image.
    Voici ce que ça donne avec un seuil = 150

    Sans être indiscret, pourrais-je savoir quel est l'objectif de cette procédure?
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 8
    Points
    8
    Par défaut
    Merci BARAK ALLAH FIK b_reda31 a votre réponse..Je vais tester vos suggestions
    Sans être indiscret, pourrais-je savoir quel est l'objectif de cette procédure?
    Je suis en traîne de faire un projet pour les lecteurs du Coran, tell me la lecteur soient compatibles avec le AYA spécifique (couleur rouge ) du Coran.
    Avez-vous des suggestions sur le projet ?
    j'ai un question quelle langage tu utilisé?
    pour moi c'est Windev

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 8
    Points
    8
    Par défaut
    Salut TM
    merci b_reda31 j'ai essaie votre proposition mais je obtenu que tout le rectangle est en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    MonImage est une Image
    MonImage=Image1
    i,j sont des entiers;
    ng est un entier;
    dDébutDessin(Image1)
    POUR i = x0 A  x1
    	POUR j = y0 A y1
    		ng = dPixelCouleur(MonImage,i,j)/3
    		SI ng < ??? ALORS // quelle est numéro de couleur de noir
    			dPoint(i, j, RougeFoncé)	
    		FIN		
    	FIN
    FIN
    j'ai bloqué comment connaitre la couleur de texte pour le changer
    aide moi b_reda31 et mes amis

  7. #7
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Citation Envoyé par missoumsoft Voir le message
    Salut TM
    merci b_reda31 j'ai essaie votre proposition mais je obtenu que tout le rectangle est en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    MonImage est une Image
    MonImage=Image1
    i,j sont des entiers;
    ng est un entier;
    dDébutDessin(Image1)
    POUR i = x0 A  x1
    	POUR j = y0 A y1
    		ng = dPixelCouleur(MonImage,i,j)/3
    		SI ng < ??? ALORS // quelle est numéro de couleur de noir
    			dPoint(i, j, RougeFoncé)	
    		FIN		
    	FIN
    FIN
    j'ai bloqué comment connaitre la couleur de texte pour le changer
    aide moi b_reda31 et mes amis
    Bonsoir,
    Je vois que vous avez avancé
    Les images que vous avez fournies ne sont pas binaires, c'est à dire elles ne contiennent pas uniquement des Pixels Noirs (absolu) et des Pixels Blancs... ç'aurait été très facile dans ce cas
    Dans votre cas, il y a plusieurs nuances du noirs (texte) et plusieurs nuances du blanc (fond) ce qui complique un peu les choses. Mais on peut dire que le texte est d'une couleur sombre et le fond d'une couleur clair. Nous savons aussi que le niveau de gris des couleurs sombres est faible.
    Le niveau de gris d'une couleur peut être approché par la moyenne des valeurs de chaque composante (R,V,B) et non pas la couleur par 3. comme vous l'avez fait dans votre code !!
    Ce qui revient à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    c est un couleur;
    ng est un entier;
    POUR i = x0 A  x1
    	POUR j = y0 A y1
                    c=dPixelCouleur(MonImage,i,j)
    		ng = (RVBBleu(c)+RVBVert(c)+RVBRouge(c))/3
    		SI ng < ??? ALORS // quelle est numéro de couleur de noir
    			dPoint(i, j, RougeFoncé)	
    		FIN		
    	FIN
    FIN
    concernant la valeur du seuil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SI ng < ??? ALORS // quelle est numéro de couleur de noir
    Vous avez deux choix (voire trois) :

    1. Soit laisser la valeur du seuil fixe. Dans l'image que je vous ai fournie le seuil était à 150.
    Cette solution n'est pas très fiable, car la valeur du seuil optimal est différente d'une image à une autre voire différent au sein d'une même image.

    2. Permettre à l'utilisateur de choisir un seuil et voir le résultat. Par exemple mettre un champ de saisie SAI_Seuil où l'user saisira la valeur du seuil et ensuite on compare par rapport à cette valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SI ng < SAI_Seuil ALORS //Attention ! Le type de champ doit être entier!!
    3. La troisième méthode est plus compliquée mais plus robuste, il s'agit de développer un algorithme permettant de trouver le seuil optimal (voir Algorithme d'Otsu)... Si vous choisissez cette méthode, nous allons vite être hors sujet et il faudra continuer sur le forum traitement d'image.


    Allez bon courage, je pense que vous allez pouvoir vous en sortir
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 8
    Points
    8
    Par défaut
    merci b_reda31
    il reste un pb pour cette image fin de ligne et début de ligne

    comment faire est ce que 2 rectangle ou un seul
    répond de moi

  9. #9
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Avec un seul rectangle cela va englober les deux lignes complètes.
    Donc il vaudrait mieux utiliser deux rectangles.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 8
    Points
    8
    Par défaut
    Merci BARAK ALLAH FIK b_reda31 a votre réponse..
    Sans être indiscret, pourrais-je savoir quel est l'objectif de cette procédure?
    Je suis en traîne de faire un projet pour les lecteurs du Coran, tell me la lecteur soient compatibles avec le AYA spécifique (couleur rouge ) du Coran.
    Avez-vous des suggestions sur le projet ?
    j'ai un question quelle langage tu utilisé?
    pour moi c'est Windev

  11. #11
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Citation Envoyé par missoumsoft Voir le message
    Je suis en traîne de faire un projet pour les lecteurs du Coran, tell me la lecteur soient compatibles avec le AYA spécifique (couleur rouge ) du Coran.
    C'est un noble projet. Bonne continuation

    Citation Envoyé par missoumsoft Voir le message
    Avez-vous des suggestions sur le projet ?
    j'ai un question quelle langage tu utilisé?
    pour moi c'est Windev
    Alors si je comprends bien, vous tentez de synchroniser la lecture (sonore) avec la visualisation (Image : Texte rouge).
    J'ai remarqué que vous essayez de mettre en rouge toute la aya. Ne serait il pas mieux de le faire par mot ?
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 41
    Points : 8
    Points
    8
    Par défaut
    Salut TM
    J'ai remarqué que vous essayez de mettre en rouge toute la aya. Ne serait il pas mieux de le faire par mot ?
    vraiment
    Mais cela nécessite des travaux majeurs
    Merci pour votre suggestion

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/12/2013, 20h16
  2. Réponses: 1
    Dernier message: 08/06/2006, 12h01
  3. Réponses: 2
    Dernier message: 15/12/2005, 10h15
  4. Modifier la recordsource d'un sous form
    Par _developpeur_ dans le forum Access
    Réponses: 5
    Dernier message: 17/11/2005, 07h33
  5. Comment modifier la couleur du texte sélectionné ?
    Par VincentR dans le forum Composants VCL
    Réponses: 4
    Dernier message: 14/06/2005, 22h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo