0

Android デバイスからイメージを受信し、パブリック共有フォルダーに保存する wcf レストがあります。

すべて正常に動作していますが、画像ファイル (実際の画像サイズは 15kb) を共有フォルダーに保存すると、489kb で保存されます。

どの画像ファイルも 489kb のみで保存されます。なぜこのように保存されているのかという問題が見つかりました..

これは私のコードです..

[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "UploadImage")]
public string RecieveImage(Stream ImageStream)
{
    try
    {
        byte[] buffer = new byte[500000];
        ImageStream.Read(buffer, 0, 500000);
        FileStream f = new FileStream(@"c:\desktop\wcfUploadImage.jpeg", FileMode.OpenOrCreate);               
        f.Write(buffer, 0, buffer.Length);
        f.Close();
        f.Dispose();
    }
    catch (Exception ex)
    {
        throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
    }

    return "Successsfully recieved.";
}

バイト[500000]のため、私は489kbで画像を保存しています。500000 をImageStream.lengthに置き換えるとエラーが発生します。

画像を原寸大で保存する正しい方法は?

4

1 に答える 1

0

Streamのメソッドは、実際に読み取ったReadバイト数を返します。その値を使用します。Int32

要求した正確なバイト数 (たとえば 500000) が返された場合は、ストリームを再度読み取る必要がある可能性が高いことに注意してください。まだ読み取られていないデータがあります。

于 2013-09-16T09:01:34.843 に答える