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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 081
    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 081
    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 081
    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 081
    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 081
    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 081
    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

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