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

C++Builder Discussion :

Texte sur image JPEG


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par d�faut Texte sur image JPEG
    Bonjour,
    J'utilise C++ Builder XE2, et j'aimerais tout simplement ajouter du texte sur une image JPEG puis enregistrer les modifications, mais je ne sais pas du tout comment faire, pouvez-vous m'aider?
    Merci

  2. #2
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Utilise le TJPEGImage ou un TPicture, via le Canvas, tu fais DrawText ou TextOut
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par d�faut
    Bonjour,
    J'utilise C++ Builder XE2, et dans ma liste de composant je n'ai ni TJPEGImage, ni TPicture ...

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    La Palette de composant ne contient qu'une partie infime des classes RTL et VCL !
    Faudrait faire un petit effort
    Voir la documentation de TJPEGImage ou de TPicture

    Tient, j'ai ce code, � l'�poque de Delphi 6, c'est globalement similaire en XE2 (quoi qu'on peut faire plus court), en voici un rapide traduction du couple TJPEGImage\TBitmap

    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
    18
    19
    20
    21
    22
    23
     
      TJPEGImage* DummyJPEg = new TJPEGImage();
      try
      {
        DummyJPEg->LoadFromFile("C:\\Dossier\\Fichier.JPEG");
     
        TJPEGImage* DummyBitmap = new TBitmap();
        try
        {
          DummyBitmap->Assign(DummyJPEg);
          DummyBitmap->Canvas->TextOut(10, 10, 'Mon Texte');
          DummyJPEg->Assign(DummyBitmap);
          DummyJPEg->SaveToFile("C:\\Dossier\\Fichier.JPEG"); 
        }
        __finally
        {
          delete DummyBitmap;
        }
      __finally
      {
        delete  DummyJPEg;
      }
    }
    en th�orie, en XE2, le JPEG est implicite, code � tester

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      TPicture* DummyPicture = new TPicture();
      try
      {
        DummyPicture->LoadFromFile("C:\\Dossier\\Fichier.JPEG");
     
        DummyPicture->Bitmap->Canvas->TextOut(10, 10, 'Mon Texte');
     
        DummyPicture.SaveToFile("C:\\Dossier\\Fichier.JPEG"); // Je crois, a vérifier qu'il va lire l'extension ! 
      }
      __finally
      {
        delete  DummyJPEg;
      }
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par d�faut
    Effectivement il y a plein de choses que je ne connais pas encore sur C++ Builder, mais j'ai pr�vu de suivre une formation

    J'ai test� le code 2, et si je mets "DummyPicture->Bitmap->Canvas->TextOut(10, 10, 'Mon Texte');" le fichier final est cr�� mais ne contient pas d'image.

    J'ai test� le code 1 :
    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
    18
    19
    20
    21
    TJPEGImage* DummyJPEG = new TJPEGImage();
    try
    {
    	DummyJPEG->LoadFromFile("image01.jpg");
    	TBitmap* DummyBitmap = new TBitmap();
    	try
    	{
    		DummyBitmap->Assign(DummyJPEG);
    		DummyBitmap->Canvas ->TextOut(100,100,"test01");
    		DummyJPEG->Assign(DummyBitmap);
    		DummyJPEG->SaveToFile("test01.jpg"); 
    	}
    	__finally
    	{
    	  delete DummyBitmap;
    	}
    }
    __finally
    {
    	delete  DummyJPEG;
    }
    Il fonctionne, mais �trangement le fichier de d�part est de 485Ko et le fichier final est de 167Ko??!!
    De plus, pour le moment j'ai du texte noir, sur fond blanc, pas de choix de couleur ni de taille (juste la position)

    N'y aurait-il pas moyen de cr�er un TLabel, avec des param�tres de font,color,size ... et de l'incruster dans l'image � une position choisi?

  6. #6
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Pour le changement de taille, il faut fouiller dans les options comme TJPEGImage.CompressionQuality

    Pour la couleur, Canvas, Brush, Font, TBrushStyle ... il faut que tu fouilles un peu plus !

    Ton but est de modifier l'Image JPEG ?
    Ou de l'afficher avec juste un texte par dessus ?

    Si c'est juste l'afficher, un TImage->Picture->LoadFromFile ...
    Ensuite, le TLabel pourrait avoir des difficult�s � se dessiner par dessus un TImage (faudrait jouer avec BringToFront)
    Mais un Panel avec ParentBackGround � True devient transparent, et donc on voit le TImage en dessous
    Idem avec un TSpeedButton ou TStaticText
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par d�faut
    Le but est d'avoir exactement la m�me image (m�me qualit�) mais d'ajouter du texte dessus, mais la fonction que tu m'as propos� ne permet pas de jouer sur la taille et la couleur du texte...

  8. #8
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut

    Je veux bien t'aider mais l� tu abuses un peu !

    Les r�gles du Club - 4.13. Lyc�en, coll�gien, �tudiant, (bref un apprenti d�veloppeur)

    Nous ne sommes pas l� pour faire vos exercices.
    Entendez par l� que nous serons bien �videmment tout � fait d'accord de vous aider � r�soudre votre probl�me, pour autant que vous fassiez vous-m�me des efforts.
    Postez votre question, mais proposez �galement un d�but de solution, un bout de code, etc. En aucun cas, nous ne ferons le travail � votre place.

    Merci de votre compr�hension.
    C'est un peu ce que j'ai l'impression de faire ! O� dois-je envoyer la Facture ?


    La Formation est urgente !
    Mais avec un peu d'effort en lisant la documentation, tu aurais du trouver !

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    DummyBitmap->Canvas->Brush->Style = bsClear;
    DummyBitmap->Canvas->Font->Color = clRed;
    DummyBitmap->Canvas->Font->Size = 20;
    DummyBitmap->Canvas->Font->Name = "Comic Sans MS";
    DummyBitmap->Canvas->Font->Style = TFontStyles(DummyBitmap->Canvas->Font->Style) << fsBold << fsUnderline;
    DummyBitmap->Canvas ->TextOut(100,100,"test01");
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par d�faut
    Personnellement je ne pense pas abuser. J'ai pass� du temps � chercher avant de poser la question sur un forum.
    Ca fait 6 ans que je d�veloppe sur c++ builder (pas en permanence, je fais aussi d'autres choses) et je me suis auto-form� en faisant tout les tuto, tous les exemple de "D�veloppez.com", tous les trucs et astuces... je pense avoir apprit pas mal de chose, j'ai fais des programmes qui "tournent"... peu �tre pas tout � fait "propre" mais bon ...
    C'est en faisant l'acquisition r�cemment de la version XE2 que je me suis dit : l� c'est le moment de faire une formation ... d�j� la formation de base car c'est �vident qu'il y a des choses de base que je ne connais pas. enfin bref!

    Tu sais qu'il �tait possible de trouver �a dans l'aide car tu sais o� chercher, puisque tu as la solution, mais le plus dure pour trouver dans l'aide c'est de savoir "quoi" chercher, je n'avais pas compris toute la subtilit� des "canvas", maintenant gr�ce � toi j'ai compris

    En tout cas merci de ton aide!!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par d�faut
    Me revoila apr�s un petit moment pour essayer de r�soudre un probl�me li� � l�incrustation de texte sur l'image.

    J'ai un programme qui tourne en permanence est qui prend 5 photos toutes les minutes. Sur chaque photo j'�cris 10 lignes de texte de la fa�on suivante :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    TJPEGImage* DummyJPEG = new TJPEGImage();
    try
    {
    	DummyJPEG->LoadFromFile(FileName_Photo_En_Cours);
    	TBitmap* DummyBitmap = new TBitmap();
    	try
    	{
    		DummyBitmap->Assign(DummyJPEG);
    		DummyBitmap->Canvas->Brush->Style=bsClear;
    		DummyBitmap->Canvas->Font->Size=30;
    		DummyBitmap->Canvas->Font->Color = (TColor)0x006B6B6B;
    		DummyBitmap->Canvas->TextOut(50,1000,DatePhoto);
    		DummyBitmap->Canvas->TextOut(50,1050,TimePhoto);
    		DummyBitmap->Canvas->TextOut(50,1100,Edit1->Text);
    		DummyBitmap->Canvas->TextOut(50,1150,Edit2->Text);
    		DummyBitmap->Canvas->TextOut(50,1200,Edit3->Text);
    		DummyBitmap->Canvas->TextOut(1400,50,Edit4->Text);
    		DummyBitmap->Canvas->TextOut(1400,100,Edit5->Text);
    		DummyBitmap->Canvas->TextOut(1400,150,Edit6->Text);
    		DummyBitmap->Canvas->Font->Style = TFontStyles(DummyBitmap->Canvas->Font->Style)<< fsBold<<fsItalic;
    		DummyBitmap->Canvas->TextOut(1600,1150,Edit7->Text);
    		DummyBitmap->Canvas->TextOut(1600,1200,Edit8->Text);
    		DummyJPEG->Assign(DummyBitmap);
    		DummyJPEG->CompressionQuality=100;
    		DummyJPEG->SaveToFile(FileName_Photo_En_Cours);
    	}
    	__finally
    	{
    		delete DummyBitmap;
    	}
    }
    __finally
    {
    	delete  DummyJPEG;
    }
    La grande majorit� du temps tout ce passe bien, mais p�riodiquement, certaine ligne de texte ne sont pas �crient. Ce n'est jamais les m�mes. Parfois c'est toutes les lignes de texte qui ne sont pas �crite sur l'image.

    Je n'arrive vraiment pas � comprendre ce qui peut se passer, avez-vous une id�e?

  11. #11
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Tes Images sont toujours assez grande pour accueillir des texte � plus de 1000 pixel vertical ou horizontal ?
    Utilise un TImage pour d�boguer et avoir un aper�u du DummyBitmap

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    DummyBitmap->Canvas->TextOut(1600,1200,Edit8->Text);
    Image1->Picture->Bitmap->Assign(DummyBitmap);
    DummyJPEG->Assign(DummyBitmap);
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Texte sur image
    Par medchennani dans le forum Delphi
    R�ponses: 5
    Dernier message: 05/03/2007, 13h06
  2. clic sur image JPEG
    Par flamel dans le forum VB 6 et ant�rieur
    R�ponses: 8
    Dernier message: 03/02/2007, 23h37
  3. [ImageMagick] Ins�rer du texte sur image upload�e
    Par fabien14 dans le forum Biblioth�ques et frameworks
    R�ponses: 16
    Dernier message: 01/12/2006, 21h03
  4. fonctions d'image : texte sur image
    Par guy2004 dans le forum Langage
    R�ponses: 2
    Dernier message: 10/08/2006, 09h56
  5. R�ponses: 9
    Dernier message: 16/11/2005, 11h32

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