将图像加载到文件流中

10

我正在使用以下代码加载图像:

OpenFileDialog open = new OpenFileDialog();

选定文件后,“打开”窗口中会显示包括路径在内的多个选项。

现在我想将文件加载到文件流(或类似的东西)中以通过Web服务发送...这可能吗?

谢谢


是的,这是可能的。还有其他问题吗? - Oded
冒着过度使用我的心灵能力的风险,我猜测mouthpiec实际上可能正在寻找如何加载文件的提示。如果是这种情况,他们可能想在这里查看:http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/e2f183aa-307e-463d-b846-1ad6418848a3 - Steven Sudit
Steven,我成功加载了文件,例如我已经将图像加载到图片框中,但我想知道如何将其加载到文件流中的代码。 - mouthpiec
3个回答

10

您可以使用FileStream打开文件:

FileStream file = new FileStream("path to file", FileMode.Open);
你可以将此内容传递给 Web 服务的 http 上下文 Response.OutputStream 属性。你仍需要设置正确的 MIME 类型和各种头文件,但这很有效:

您可以随后通过 web 服务的 http 上下文 Response.OutputStream 属性传递此内容。您仍需要设置正确的 MIME 类型和各种头文件,但这是有效的:

HttpContext.Current.Response.OutputStream = file;

话虽如此,从Web服务(或Web应用程序)发送文件的最简单方法是使用Response.WriteFile 方法:

Response.WriteFile("Path To File");

如果“文件路径”是嵌入式BMP,我该怎么办? - warmth
@warmth - 访问嵌入式文件作为流并将其传递到输出流。 - Oded

7

试试这个:

byte[] buff = System.IO.File.ReadAllBytes(open.FileName);
System.IO.MemoryStream ms = new System.IO.MemoryStream(buff);

能否从缓冲区重新创建文档? - mouthpiec
我成功地使用普通的“new Bitmap()”构造函数将其转换为位图。 - mouthpiec

2

是的,可以创建一张图片

var img = Image.FromFile(/*path*/);

或者转换为流

var file = new FileStream("path to file", FileMode.Open);

但是应该如何发送它,由您决定

sendToWs(img)


如果图像是位图,它会被保存为位图吗?或者如果它是JPEG,它会被保存为JPEG,以此类推? - mouthpiec
Image是一个抽象类,为Bitmap和Metafile提供功能。要保存图像,您可以使用静态方法save Image.Save(path,format),其中format是ImageFormat的形式。 - Damian Leszczyński - Vash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接