2010-08-27 7 views
5

Ich möchte ein kleines Programm in .NET 4.0 schreiben, das eine .jpg (oder .jpeg) Datei öffnet, eine Zeile Text zum Bild hinzufügt und das Bild dann als .jpg erneut speichert. Kennt jemand den einfachsten Weg, dies zu tun?Können Sie in .NET ein JPEG öffnen, Text hinzufügen und erneut als JPEG speichern?

Danke für jede Hilfe.

+1

Denken Sie daran, resaving ein JPEG (vor allem, die Sie geändert haben) komprimiert sie wieder, und jede Kompression wirft einige Details aus. Wenn Sie dies tun müssen, tun Sie es so oft wie möglich. – cHao

+1

@cHao - eine andere Option wäre, das Bild im laufenden Betrieb zu erzeugen/auszugeben, während das Original ohne Wasserzeichen beibehalten wird. –

Antwort

12

Etwas wie folgt aus:

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

können Sie dies tun, ohne zu speichern? –

+0

@DB Yup, Sie können die [Bitmap.Save (Stream, ImageFormat)] (https://msdn.microsoft.com/en-us/library/ms142147 (v = vs.110) .aspx) Überladung verwenden um in einen Stream zu schreiben (zB ein '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)); 
Verwandte Themen