Insérer un text dans une image BMP (C#) [Résolu]

Hammings 10 Messages postés jeudi 21 juillet 2005Date d'inscription 18 mai 2006 Dernière intervention - 5 avril 2006 à 18:08 - Dernière réponse : Hammings 10 Messages postés jeudi 21 juillet 2005Date d'inscription 18 mai 2006 Dernière intervention
- 6 avril 2006 à 10:14
Bonjour,


Je souhaite insérer un texte dans une image BMP, en consultant la doc
C#, j'ai essayé de procédé ainsi (mais malheureusement ca ne marche pas)


1.[DllImport("gdi32", CharSet = CharSet.Auto)] // utilisation de TextOut.


2.static extern bool TextOut(IntPtr hDC, int x, int y, string text);


3....


4. Bitmap oB = new Bitmap("C:\\tempo\\Image.bmp");


5.Graphics gBitmap = Graphics.FromImage(oB);


6. IntPtr iHdcBitmap = gBitmap.GetHdc();


7.TextOut(iHdcBitmap, 10, 10, "Text à inserer dans mon image");


8.gBitmap.ReleaseHdc(iHdcBitmap);


9. gBitmap.Dispose();


le programme me pete une exception à la ligne 5 :Un objet Graphics ne
peut pas être créé à partir d'une image au format pixel indexé


Comment faire pour inserer un texte dans mon image "Image.bmp" qui est sur le disque?


Y'a-t-il un moyen plus simple en passant par Graphics.DrawString( ... ) [javascript:Insert_Emoticon('/imgs2/smile_question.gif'); ]





Merci par avance.
Afficher la suite 

5 réponses

Répondre au sujet
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 5 avril 2006 à 20:14
0
Utile
Salut,

Oui, y'a plus simple:

System.Drawing.Image Img = System.Drawing.Bitmap.FromFile("TonImage");
System.Drawing.Graphics Graphics = System.Drawing.Graphics.FromImage(Img);
Graphics.DrawString("Text à inserer dans mon image", System.Drawing.SystemFonts.DefaultFont, System.Drawing.Brushes.Black,new System.Drawing.PointF(10, 10));
Graphics.Dispose();

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
Commenter la réponse de Charles Racaud
Hammings 10 Messages postés jeudi 21 juillet 2005Date d'inscription 18 mai 2006 Dernière intervention - 6 avril 2006 à 09:18
0
Utile
Merci pour ta réponse, mais j'ai eu la même erreur à l'excution sur la ligne 2 :



1) System.Drawing.Graphics Graphics = System.Drawing.Graphics.FromImage(Img); //génère une exception :Un objet Graphics ne peut pas être créé à partir d'une image au format pixel indexé



2)l'objet System.Drawing.SystemFonts.DefaultFont n'existe pas, j'ai du faire un

System.Drawing.Font font = new System.Drawing.Font("arial", 10);
(mais, je ne sais pas si ca marche car, je n'arrive pas à excuter le
programme jusqu'au bout...)



Merci par avance, à toute personne qui pourra m'éclairer...
Commenter la réponse de Hammings
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 6 avril 2006 à 09:32
0
Utile
Salut,
Le problème du SystemFonts qui n'existe pas vient surement du fait que vous n'utilisez pas la même version du Framework (j'imagine que tu as la version 1.1).

Pour l'exception, est-tu sur que ton image n'est pas en cours d'utilisation ailleurs ( et es-tu sur que le format de l'image est valide) ??


<HR>
[/auteurdetail.aspx?ID=13319
[Pub] ]http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever /auteurdetail.aspx?ID=13319
Commenter la réponse de cs_Bidou
Hammings 10 Messages postés jeudi 21 juillet 2005Date d'inscription 18 mai 2006 Dernière intervention - 6 avril 2006 à 10:14
0
Utile
Oui, j'utilise la version 1.1 du Framework :(



pour l'exception elle est documenté dans l'aide.



Merci mister (C# forever)
Commenter la réponse de Hammings
Hammings 10 Messages postés jeudi 21 juillet 2005Date d'inscription 18 mai 2006 Dernière intervention - 6 avril 2006 à 10:11
-2
Utile
C'est bon, je crois avoir trouver la solution (grace à l'exemple de Kenji)

Voici mon code :



System.Drawing.Font font = new System.Drawing.Font("arial", 10);


System.Drawing.Image Img =
System.Drawing.Bitmap.FromFile("C:\\tempo\\remise.bmp");


System.Drawing.Image TmpImg = new System.Drawing.Bitmap(Img, Img.Width,
Img.Height);


System.Drawing.Graphics Graphics =
System.Drawing.Graphics.FromImage(TmpImg);


Graphics.DrawString("Nouveau Text à inserer dans mon image", font,
System.Drawing.Brushes.Black,new System.Drawing.PointF(100, 100));




TmpImg.Save("C:\\tempo\\newImage.bmp"); // la nouvelle image avec le
texte souhaité



et pour l'exception, en allant dans l'aide de la fonction System.Drawing.Graphics.FromImage, j'ai trouver l'explication (c'est bien expliquer en plus, y'a même un exemple tout prêt ;) )



Merci Kenji, ton aide m'a etait bénéfique
Commenter la réponse de Hammings

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.