将流保存为图像

问题描述:

如何将流保存为图像并将图像存储在临时文件中?将流保存为图像

+1

你是什么意思的“作为一个图像”是什么意思? – 2010-09-06 11:51:41

+0

这里的图像是指一个jpeg图像文件,它将被存储在临时文件位置,流是System.IO.Stream。 – banupriya 2010-09-06 12:10:32

尝试

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

看看Bitmap Class。有一个构造函数重载需要Stream作为参数,并且有一个名为Save的方法,您可以使用该方法将其另存为文件。

+0

位图步骤不是必需的。我们可以直接将流写入文件。 – 2010-09-06 12:18:29

您的信息流(图片)在下面的代码中是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受版权保护我的贡献是文件的名称;)

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

Windows Phone的8.1我发现了以下工作得很好。创建您的TempStorageFile在你想要的任何路径,然后像这样传递你的图像的流:

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