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
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
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
Bonjour,
J'utilise C++ Builder XE2, et dans ma liste de composant je n'ai ni TJPEGImage, ni TPicture ...
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
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
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; } }
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
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 :
Il fonctionne, mais étrangement le fichier de départ est de 485Ko et le fichier final est de 167Ko??!!
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; }
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?
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
Partager