将图像POST到Windows Phone 8中的Web服务器

时间:2013-03-15 20:46:34

标签: c#-4.0 windows-runtime windows-phone-8 dotnet-httpclient

我有一个运行良好的Windows 8应用程序现在我想为Windows Phone 8编写相同的应用程序,但我只得到一个黑色图像而不是正确的图像。

这是我上传图片文件的代码

if ((_fileType == ".jpg" || _fileType == ".png" || _fileType == ".jpeg") && _fileSize < 3500000)
{
    byte[] myPicArray = ConvertToBytes(_bmpFile);
    HttpClient httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri(MYURI);
    MultipartFormDataContent form = new MultipartFormDataContent();
    HttpContent content = new ByteArrayContent(myPicArray);
    form.Add(content, "media", _randomStringFileName + _fileType);

    HttpResponseMessage response = await httpClient.PostAsync("upload.php", form);
}

这是将我的图像转换为字节数组的代码

private byte[] ConvertToBytes(BitmapImage bitmapImage)
{
    using (MemoryStream ms = new MemoryStream())
    {
        WriteableBitmap btmMap = new WriteableBitmap
            (bitmapImage.PixelWidth, bitmapImage.PixelHeight);

        // write an image into the stream
        Extensions.SaveJpeg(btmMap, ms,
            bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100);

        return ms.ToArray();
    }
}

有谁知道我为什么只得到一张黑色图像而不是正确的图像?图像由PhotoChooseTask选择。

1 个答案:

答案 0 :(得分:3)

PhotoChooseTask已经为你提供了Stream,所以你只需要使用它(你不能使用BitMap,因为它仍然忙于将它写入设备并生成缩略图等)

        PhotoResult photoResult = e as PhotoResult;
        MemoryStream memoryStream = new MemoryStream();
        photoResult.ChosenPhoto.CopyTo(memoryStream);
        byte[] myPicArray = memoryStream.ToArray();