2010-08-27 14 views
5

.NET 4.0'da .jpg (veya .jpeg) dosyasını açacak, görüntüye bir metin satırı ekleyecek ve ardından görüntüyü .jpg olarak yeniden kaydedecek küçük bir program yazmak istiyorum. Bunu yapmanın en kolay yolu bilen var mı?Bir JPEG açabilir, metin ekleyebilir ve .NET’te JPEG olarak kaydedebilir misiniz?

Yardımlarınız için teşekkür ederiz. Böyle

+1

(özellikle bir değişiklik veya ekleme yaptığınız) JPEG kaydetmeyi, unutmayın yeniden sıkıştırır ve her sıkıştırma bazı detay dışarı fırlatır. Bunu yaptığınızda, yapmanız gerekiyorsa, mümkün olduğunca az yapın. – cHao

+1

@cHao - başka bir seçenek, filigran olmadan orijinali korurken görüntüyü anında üretmek/çıktılamak olacaktır. –

cevap

12

şey:

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

bunu kaydetmeden yapabilir misin? –

+0

@DB Yup, ['Bitmap.Save (Akış, ImageFormat)'] işlevini kullanabilirsiniz (https://msdn.microsoft.com/en-us/library/ms142147 (v = vs.110) .aspx) bir akıma yazmak (ör. bir '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)); 
İlgili konular