C#将图像转换为文件流

C#将图像转换为文件流,c#,C#,到目前为止,我的应用程序允许用户通过文件选择器选择图像,并通过FTP通过文件流上传图像: Stream ftpStream = request.GetRequestStream(); FileStream file = File.OpenRead(fileToUpload); length = 1024; buffer = new byte[length]; do {

到目前为止,我的应用程序允许用户通过文件选择器选择图像,并通过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上传图像? 提前感谢。

您可以使用

大概是这样的:

image = Image.FromStream(new MemoryStream(buffer));
var stream = File.OpenWrite(openFileDialog1.FileName);
image.Save(stream, ImageFormat.Jpeg);
要保存到FileStream,请使用以下内容:

image = Image.FromStream(new MemoryStream(buffer));
var stream = File.OpenWrite(openFileDialog1.FileName);
image.Save(stream, ImageFormat.Jpeg);
你可以用

大概是这样的:

image = Image.FromStream(new MemoryStream(buffer));
var stream = File.OpenWrite(openFileDialog1.FileName);
image.Save(stream, ImageFormat.Jpeg);
要保存到FileStream,请使用以下内容:

image = Image.FromStream(new MemoryStream(buffer));
var stream = File.OpenWrite(openFileDialog1.FileName);
image.Save(stream, ImageFormat.Jpeg);

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

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

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

要将图像写入filestream,我建议使用image类的Save函数。即

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

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

试试这个:试试这个:如果这是一个愚蠢的问题,请道歉。当我执行应用程序时,在“image.save”行上出现以下错误:“Value不能为null。参数名称:stream”@user1662290它所说的是您为image.save函数指定了stream参数的null值。换句话说,
ftpStream
为空!在hand之前,您需要确保您正在执行的操作不会导致ftpStream变为null。如果您需要更多帮助,请发布更多您的代码。嗨。谢谢你的回复。比已经拥有的更好。我的错误是我写的是文件流而不是ftp流。:/哎哟,现在真是太棒了如果这是一个愚蠢的问题,Dapologics。当我执行应用程序时,在“image.save”行上出现以下错误:“Value不能为null。参数名称:stream”@user1662290它所说的是您为image.save函数指定了stream参数的null值。换句话说,
ftpStream
为空!在hand之前,您需要确保您正在执行的操作不会导致ftpStream变为null。如果您需要更多帮助,请发布更多您的代码。嗨。谢谢你的回复。比已经拥有的更好。我的错误是我写的是文件流而不是ftp流。:/哎哟,现在真是太棒了D