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 Methodを使用できます。

このようなもの:

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

FileStream に保存するには、次のようなものを使用します。

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