2009-04-02 17 views
10

मुझे छवि फ़ाइल में टेक्स्ट जोड़ने की आवश्यकता है। मुझे एक छवि फ़ाइल (jpg, png, gif) पढ़ने की आवश्यकता है और मुझे इसमें एक पंक्ति टेक्स्ट जोड़ने की आवश्यकता है।एक छवि फ़ाइल में पाठ जोड़ना

+0

इसमें देख रहे हैं। समस्या यह है कि जब आप फ़ाइल खोलते हैं, तो यह लॉक होता है ताकि आप उसी फ़ाइल में सहेज सकें। आप वापस आ जाएंगे ... –

उत्तर

0

आप ग्राफिक्स ऑब्जेक्ट का उपयोग करके सी # में कर सकते हैं। आप तस्वीर से ग्राफिक्स ऑब्जेक्ट प्राप्त कर सकते हैं (image.CreateGraphics() - या मुझे कुछ याद है) और टेक्स्ट को जोड़ने के लिए अंतर्निहित विधियों में से कुछ का उपयोग करें जैसे: Graphycs.DrawString() या अन्य संबंधित विधियां।

20

अच्छी तरह से जीडीआई में + आप छवि वर्ग का उपयोग कर फ़ाइल में पढ़ेंगे और फिर टेक्स्ट जोड़ने के लिए ग्राफिक्स कक्षा का उपयोग करेंगे। की तरह कुछ:

Image image = Image.FromFile(@"c:\somepic.gif"); //or .jpg, etc... 
    Graphics graphics = Graphics.FromImage(image); 
    graphics.DrawString("Hello", this.Font, Brushes.Black, 0, 0); 

आप पुराने एक से अधिक फ़ाइल सहेजना चाहते हैं, तो कोड विधि Image.FromFile() के रूप में एक सा बदलने के लिए है जब तक यह निपटारा है फ़ाइल अवरोधित करता है।

FileStream fs = new FileStream(@"c:\somepic.gif", FileMode.Open, FileAccess.Read); 
    Image image = Image.FromStream(fs); 
    fs.Close(); 

    Bitmap b = new Bitmap(image); 
    Graphics graphics = Graphics.FromImage(b); 
    graphics.DrawString("Hello", this.Font, Brushes.Black, 0, 0); 

    b.Save(@"c:\somepic.gif", image.RawFormat); 

    image.Dispose(); 
    b.Dispose(); 

मैं यह परीक्षण काफी अच्छी तरह से हालांकि :)

+0

बस शैतान के वकील को यहां खेलना: आपको स्पष्ट रूप से इसे बाद में सहेजने की ज़रूरत होगी! –

+0

उम्मीद है कि उपर्युक्त मदद करेगा। –

+0

इस पाठ को घुमाने के लिए और फिर छवि में कैसे जोड़ें? –

1

gifs एक gif परिणाम के लिए विशेष रूप से के लिए, आपको निम्न की तरह प्रत्येक फ्रेम पर लिखना चाहिए होगा:: निम्नलिखित क्या मैं के साथ आया है

string originalImgPath = @"C:\test.gif"; 
Image IMG = Image.FromFile(originalImgPath); 
FrameDimension dimension = new FrameDimension(IMG.FrameDimensionsList[0]); 
int frameCount = IMG.GetFrameCount(dimension); 
int Length = frameCount; 
GifBitmapEncoder gEnc = new GifBitmapEncoder(); 
for (int i = 0; i < Length; i++) 
{ 
    // Get each frame 
    IMG.SelectActiveFrame(dimension, i); 
    var aFrame = new Bitmap(IMG); 

    // write one the selected frame 
    Graphics graphics = Graphics.FromImage(aFrame); 
    graphics.DrawString("Hello", new Font("Arial", 24, System.Drawing.FontStyle.Bold), System.Drawing.Brushes.Black, 50, 50); 
    var bmp = aFrame.GetHbitmap(); 
    var src = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
       bmp, 
       IntPtr.Zero, 
       Int32Rect.Empty, 
       BitmapSizeOptions.FromEmptyOptions()); 
    // merge frames 
    gEnc.Frames.Add(BitmapFrame.Create(src)); 
} 

string saveImgFile = @"C:\modified_test.gif" 
using (FileStream fs2 = new FileStream(saveImgFile, FileMode.Create)) 
{ 
    gEnc.Save(fs2); 
} 

मुझे यह उल्लेख करना चाहिए था कि this post से gif फ्रेम प्राप्त करना चाहिए।

+0

https://stackoverflow.com/a/48395131/485008 –

संबंधित मुद्दे