2010-08-27 17 views
5

Je veux écrire un petit programme dans .NET 4.0 qui va ouvrir un fichier .jpg (ou .jpeg), ajouter une ligne de texte à l'image, puis réenregistrer l'image en tant que .jpg. Est-ce que quelqu'un sait la manière la plus facile de faire ceci?Pouvez-vous ouvrir un fichier JPEG, ajouter du texte et le réenregistrer en tant que fichier JPEG dans .NET?

Merci pour toute aide.

+1

Gardez à l'esprit, resaving un JPEG (en particulier celui que vous avez modifié) compresse à nouveau, et chaque compression jette certains détails. Lorsque vous faites cela, si vous le devez, faites-le aussi peu de fois que possible. – cHao

+1

@cHao - une autre option serait de générer/sortir l'image à la volée tout en conservant l'original sans filigrane. –

Répondre

12

Quelque chose comme ceci:

var filePath = @"D:\Pictures\Backgrounds\abc.jpg"; 
Bitmap bitmap = null; 

// Create from a stream so we don't keep a lock on the file. 
using (var stream = File.OpenRead(filePath)) 
{ 
    bitmap = (Bitmap)Bitmap.FromStream(stream); 
} 

using (bitmap) 
using (var graphics = Graphics.FromImage(bitmap)) 
using (var font = new Font("Arial", 20, FontStyle.Regular)) 
{ 
    // Do what you want using the Graphics object here. 
    graphics.DrawString("Hello World!", font, Brushes.Red, 0, 0); 

    // Important part! 
    bitmap.Save(filePath); 
} 
+0

pouvez-vous faire cela sans enregistrer? –

+0

@DB Yup, vous pouvez utiliser le ['Bitmap.Save (Stream, ImageFormat)'] (https://msdn.microsoft.com/en-us/library/ms142147 (v = vs.110) .aspx) surcharge écrire dans un flux (par exemple un 'MemoryStream'). – TheCloudlessSky

3
var myBitmap = new Bitmap("C:\\myImage.jpg"); 
var g = Graphics.FromImage(myBitmap); 
g.DrawString("My\nText", new Font("Tahoma", 40), Brushes.White, new PointF(0, 0)); 
Questions connexes