有没有办法将BitmapImage(Windows.UI.Xaml.Media.BitmapImage)转换为Byte []数组?我没有尝试过任何工作.... 另一种可能的情况(如果BitmapImage无法转换为Byte数组)是从web下载图像然后将其转换为数组......
但我不知道我怎么能这样做...... 如果有人有想法,那将是非常好的。
目前尝试:
HttpClient http = new HttpClient();
Stream resp = await http.GetStreamAsync("http://localhost/img/test.jpg");
var ras = new InMemoryRandomAccessStream();
await resp.CopyToAsync(ras.AsStreamForWrite());
BitmapImage bi = new BitmapImage();
bi.SetSource(ras);
byte[] pixeBuffer = null;
using (MemoryStream ms = new MemoryStream())
{
int i = bi.PixelHeight;
int i2 = bi.PixelWidth;
WriteableBitmap wb = new WriteableBitmap(bi.PixelWidth, bi.PixelHeight);
Stream s1 = wb.PixelBuffer.AsStream();
s1.CopyTo(ms);
pixeBuffer = ms.ToArray();
}
但它不起作用......我和我i2总是设置为0.所以ras无法正常工作......发生了什么事?
由于
答案 0 :(得分:1)
在您的代码中,您永远不会等待BitmapImage从Web加载图像,因此当您访问它们时它不知道它的PixelWidth / PixelHeight。您可以等待它加载 - 例如使用AsyncUI库调用“await bi。WaitForLoadedAsync()”。如果你想访问解码的像素,这对你来说真的没什么帮助,因为BitmapImage不能让你访问像素,而且目前没有API可以将BitmapImage转换成WriteableBitmap。
您可以查看有关该主题的earlier question。您需要使用类似HttpClient.GetAsync()的内容从网络上获取图像文件,然后使用BitmapDecoder之类的内容加载它。