2010-09-06 16 views
10

छवि के रूप में स्ट्रीम को सहेजने और छवि को temp फ़ाइलों में संग्रहीत करने के लिए कैसे करें?छवि को छवि के रूप में सहेजें

+1

आपका मतलब "छवि के रूप में" वास्तव में क्या है? –

+0

छवि का अर्थ है एक जेपीईजी छवि फ़ाइल जिसे temp फ़ाइलों में संग्रहीत किया जाना है स्थान और स्ट्रीम System.IO.Stream है। – banupriya

उत्तर

30

मैंने पाया अच्छी तरह से काम करने के लिए निम्न

Image img = System.Drawing.Image.FromStream(myStream); 

img.Save(System.IO.Path.GetTempPath() + "\\myImage.Jpeg", ImageFormat.Jpeg); 
+0

छवि चरण आवश्यक नहीं है। हम स्ट्रीम को सीधे फाइल में लिख सकते हैं। –

+2

हां .. लेकिन मुझे लगता है कि बनप्रियाविजय आवेदन में छवि के साथ कुछ करना चाहता है। अन्यथा यह सिर्फ एक फ़ाइल कॉपी ऑपरेशन होगा जो System.IO.File.Copy() का उपयोग करके किया जा सकता है। –

+1

जब मैं इस पंक्ति को लिखता हूं छवि img = System.Drawing.Image.FromStream (स्ट्रीम); यह मुझे एक त्रुटि देता है "पैरामीटर मान्य नहीं है।" – Chirag

1

Bitmap Class पर एक नज़र डालें। एक कन्स्ट्रक्टर ओवरलोड है जो स्ट्रीम को पैरामीटर के रूप में लेता है और Save नामक एक विधि है जिसे आप इसे फ़ाइल के रूप में सहेजने के लिए उपयोग कर सकते हैं।

+0

बिटमैप चरण आवश्यक नहीं है। हम स्ट्रीम को सीधे फाइल में लिख सकते हैं। Path.GetTempFileName() के लिए –

0

नीचे दी गई कोड में आपकी स्ट्रीम (छवि) stream है।

using (Stream output = new FileStream ("mycat.jpg")) 
{ 
    byte[] buffer = new byte[32*1024]; 
    int read; 

    while ((read=stream.Read(buffer, 0, buffer.Length)) > 0) 
    { 
     output.Write(buffer, 0, read); 
    } 
} 

इस कोड Jon Skeet द्वारा कॉपीराइट मेरे योगदान फ़ाइल का नाम है;)

4
var tempFile = Path.GetTempFileName(); 
using (var fs = File.Create(tempFile)) 
{ 
    source.copyTo(fs); 
} 

जहां स्रोत स्रोत धारा है। अब आपकी स्रोत स्ट्रीम अस्थायी स्थान पर सहेजी गई है (tempFile द्वारा दी गई)। ध्यान दें कि फ़ाइल नाम एक्सटेंशन टीएमपी होगा।

+2

+1 जो मुझे नहीं पता था कि यह कभी अस्तित्व में है। –

+0

फ़ाइलस्ट्रीम में बनाने के लिए परिभाषा नहीं है !! इसके अलावा स्ट्रीम जो मैं इनपुट के रूप में उपयोग करता हूं वह System.IO.Stream है और मैं इस आईओ स्ट्रीम को अस्थायी फ़ाइलों में छवि में संग्रहीत करना चाहता हूं। – banupriya

+0

इसके लिए खेद है - मेरा मतलब है फ़ाइल बनाना। फ़ाइल बनाएं और फ़ाइलस्ट्रीम नहीं बनाएं। बनाएं। जवाब संपादित करेंगे। स्रोत धारा किसी भी धारा का हो सकता है। – VinayC

0

प्रयास करें विंडोज फोन 8.1 के लिए। जो भी रास्ता आप चाहते हैं उस पर अपना TempStorageFile बनाएं और फिर अपनी छवि की स्ट्रीम में इस तरह से पास करें:

var fileStream = await TempStorageFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite); 
      await RandomAccessStream.CopyAsync(imageStream, fileStream); 
संबंधित मुद्दे