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);
 }

我知道我应该将图像转换为 byte[] 但我不知道该怎么做。有人可以为我指出正确的方向吗?

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/gif或可能binary/octet-stream并调用GetBytes()图像。

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 回答