gpt4 book ai didi

c# - 为什么当我尝试使用 Windows Phone 上传图片时,它上传了一个随机的东西?

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:35 29 4
gpt4 key购买 nike

我正在尝试将图像从我的 Windows 应用商店应用程序 (Windows Phone 8.1) 上传到托管(使用 PHP),但总是在我“上传”图像时,我检查其结果“图像”是一个损坏的文件.我认为这与字节数组转换有关,但我还没有找到另一种方法。这是我的代码:

C#代码:

byte[] ConvertBitmapToByteArray()
{
WriteableBitmap bmp = bitmap;

using (Stream stream = bmp.PixelBuffer.AsStream())
{
MemoryStream memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}

public async Task<string> Upload()
{
try
{
using (var client = new HttpClient())
{
using (var content =
new MultipartFormDataContent())
{
byte[] data = ConvertBitmapToByteArray();
content.Add(new StreamContent(new MemoryStream(data)), "userfile", fileNewImage);

using (
var message =
await client.PostAsync("http://xplace.com/uploadtest.php", content))
{
var input = await message.Content.ReadAsStringAsync();

return input;
}
}
}
}
catch (Exception ex)
{
return null;
}
}

PHP代码:

<?php
header('Content-Type: application/json');
$uploaddir = getcwd();
$uploadfile = $uploaddir . "/" . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo '{"result": "sucessfull"}';
} else {
echo '{"result": "-1"}';
}
?>

我希望有人能告诉我我的错误以及如何解决。预先感谢您提供有值(value)的知识。

最佳答案

您需要通过 BitmapEncoder 传递您的 byte[] 数据在上传之前将其转换为常见的图像格式(例如 BMP、PNG、JPEG)。目前,您只是发送原始 ARGB 像素数据,没有关于如何解释它的信息。

例如,编码为 BMP:

...
byte[] data = bitmap.PixelBuffer.ToArray();

using (var stream = new InMemoryRandomAccessStream())
{
// encoder *outputs* to stream
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);

// encoder's input is the bitmap's pixel data
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight,
(uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, data);

await encoder.FlushAsync();

content.Add(new StreamContent(stream.AsStream()), "userfile", fileNewImage);
...
}

关于c# - 为什么当我尝试使用 Windows Phone 上传图片时,它上传了一个随机的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954921/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com