2010-08-27 13 views
5

मैं .NET 4.0 में एक छोटा प्रोग्राम लिखना चाहता हूं जो एक .jpg (या .jpeg) फ़ाइल खोल देगा, छवि में टेक्स्ट की एक पंक्ति जोड़ें, और उसके बाद छवि को .jpg के रूप में सहेजें। क्या किसी को ऐसा करने का सबसे आसान तरीका पता है?क्या आप एक जेपीईजी खोल सकते हैं, टेक्स्ट जोड़ सकते हैं, और .NET में जेपीईजी के रूप में पुनः सहेज सकते हैं?

किसी भी मदद के लिए धन्यवाद।

+1

ध्यान रखें, एक JPEG (विशेष रूप से एक आप संशोधित कर लिया है) resaving इसे फिर से संपीड़ित करता है, और प्रत्येक संपीड़न कुछ विस्तार से बाहर tosses। जब आप ऐसा करते हैं, यदि आपको जरूरी है, तो इसे जितनी बार संभव हो उतनी बार करें। – cHao

+1

@ सीएचओओ - एक और विकल्प वॉटरमार्क के बिना मूल को बनाए रखते हुए फ्लाई पर छवि उत्पन्न/आउटपुट करना होगा। –

उत्तर

12

कुछ इस तरह:

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

क्या आप इसे सहेजे बिना कर सकते हैं? –

+0

@ डीबी यूप, आप ['बिटमैप.वेव (स्ट्रीम, इमेजफॉर्मैट)'] (https://msdn.microsoft.com/en-us/library/ms142147 (v = vs.110) .aspx) अधिभार का उपयोग कर सकते हैं एक स्ट्रीम को लिखने के लिए (जैसे 'मेमोरीस्ट्रीम')। – 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)); 
संबंधित मुद्दे