2010-09-06 185 views
10

如何將流保存爲圖像並將圖像存儲在臨時文件中?將流保存爲圖像

+1

你是什麼意思的「作爲一個圖像」是什麼意思? – 2010-09-06 11:51:41

+0

這裏的圖像是指一個jpeg圖像文件,它將被存儲在臨時文件位置,流是System.IO.Stream。 – banupriya 2010-09-06 12:10:32

回答

30

嘗試

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

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

圖像步驟不是必需的。我們可以直接將流寫入文件。 – 2010-09-06 12:18:51

+2

是的,但我認爲banupriyavijay想在應用程序中的圖像的東西。否則,它將只是一個可以使用System.IO.File.Copy()完成的文件複製操作。 – 2010-09-06 12:40:20

+1

當我寫這一行圖片img = System.Drawing.Image.FromStream(stream);它給我一個錯誤「參數無效」。 – Chirag 2015-09-23 09:46:14

1

看看Bitmap Class。有一個構造函數重載需要Stream作爲參數,並且有一個名爲Save的方法,您可以使用該方法將其另存爲文件。

+0

位圖步驟不是必需的。我們可以直接將流寫入文件。 – 2010-09-06 12:18:29

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給出)。請注意,文件擴展名將是TMP。

+2

爲Path.GetTempFileName(),我不知道它曾經存在+1。 – 2010-09-06 12:01:53

+0

FileStream不包含Create的定義!此外,我用作輸入的流是System.IO.Stream,我想將此IO流存儲到臨時文件中。 – banupriya 2010-09-06 12:14:56

+0

對不起 - 我的意思是說File.Create而不是FileStream.Create。將編輯答案。源流可以是任何流。 – VinayC 2010-09-06 12:48:47

0

Windows Phone的8.1我發現了以下工作得很好。創建您的TempStorageFile在你想要的任何路徑,然後像這樣傳遞你的圖像的流:

var fileStream = await TempStorageFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite); 
      await RandomAccessStream.CopyAsync(imageStream, fileStream);