1

到目前为止,我的应用程序允许用户通过文件选择器选择图像并通过 FTP 通过文件流上传:

        Stream ftpStream = request.GetRequestStream();
        FileStream file = File.OpenRead(fileToUpload);
        length = 1024;

        buffer = new byte[length];
           do
            {
                bytesRead = file.Read(buffer, 0, length);
                ftpStream.Write(buffer, 0, bytesRead);
                totalReadBytesCount += bytesRead;
                var progress = totalReadBytesCount * 100.0 / totalToUpload;
                backgroundWorker1.ReportProgress((int)progress);
            }
            while (bytesRead != 0);

这工作正常。选择的图像保存为文件,然后上传。

但是,现在,我希望将其保存为“图像”,以便我可以调整它的大小等。这样代码将是:

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            image = Image.FromFile(openFileDialog1.FileName);
        }

相对于:

  if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        file = openFileDialog1.FileName;
    }

因此,我的问题是:

现在我选择的文件是一个图像文件。如何将其转换为文件流?如果这不能轻松完成,那么我将如何通过 ftp 上传图像?提前致谢。

4

2 回答 2

4

要将图像写入文件流,我建议使用 Image 类的 Save 函数。IE

image = Image.FromFile(openFileDialog1.FileName);
image.Save(ftpStream, System.Drawing.Imaging.ImageFormat.Png);

显然,您需要检查错误并可能使用不同的图像格式。

于 2013-02-20T12:34:55.920 回答
0

您可以使用Image.FromStream 方法

像这样的东西:

image = Image.FromStream(new MemoryStream(buffer));

要保存到 FileStream,请使用以下内容:

var stream = File.OpenWrite(openFileDialog1.FileName);
image.Save(stream, ImageFormat.Jpeg);
于 2013-02-20T12:31:18.140 回答