4

私はWebclientを使用して、winformアプリケーションにある画像を中央サーバーに送信しようとしています。ただし、これまで WebClient を使用したことがなく、自分のしていることは間違っていると確信しています。

まず、次のようにフォームに画像を保存して表示しています。

_screenCap = new ScreenCapture();
_screenCap.OnUpdateStatus += _screen_CapOnUpdateStatus;
capturedImage = imjObj;
imagePreview.Image = capturedImage;

スクリーンショットを撮るたびに imagePreview 画像を更新するようにイベント マネージャーを設定しました。次に、ステータスが次のように変化するたびに表示します。

private void _screen_CapOnUpdateStatus(object sender, ProgressEventArgs e)
{  
  imagePreview.Image = e.CapturedImage;
}

この画像を使用して、次のようにサーバーに渡そうとしています。

using (var wc = new WebClient())
{
    wc.UploadData("http://filelocation.com/uploadimage.html", "POST", imagePreview.Image);
 }

画像をバイト[]に変換する必要があることはわかっていますが、その方法がわかりません。誰かがこれを適切に行うための正しい方向に私を向けてもらえますか?

4

3 に答える 3

4

このように byte[] に変換できます

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
    return  ms.ToArray();
}

画像へのパスがある場合は、これも実行できます

 byte[] bytes = File.ReadAllBytes("imagepath");
于 2013-08-26T12:50:32.673 に答える
3

これはあなたを助けるかもしれません...

using(WebClient client = new WebClient())
{
     client.UploadFile(address, filePath);
}

こちらから参照。

于 2013-08-26T12:51:48.217 に答える
0

ヘッダーをまたはおそらくContentTypeヘッダーに設定し、画像を呼び出す必要があります。image/gifbinary/octet-streamGetBytes()

using (var wc = new WebClient { UseDefaultCredentials = true })
{
    wc.Headers.Add(HttpRequestHeader.ContentType, "image/gif");
    //wc.Headers.Add("Content-Type", "binary/octet-stream");
    wc.UploadData("http://filelocation.com/uploadimage.html",
        "POST",
        Encoding.UTF8.GetBytes(imagePreview.Image));
}
于 2013-08-26T13:05:28.510 に答える