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
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...
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)
C'est un peu ce que j'ai l'impression de faire ! O� dois-je envoyer la Facture ?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.
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
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!!![]()
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 :
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.
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; }
Je n'arrive vraiment pas � comprendre ce qui peut se passer, avez-vous une id�e?
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
Partager