地铁APP - 要的BitmapImage字节[]或从网络下载图像并将其转换为一个byte []数

2019-09-17 01:43发布

有没有办法到的BitmapImage(Windows.UI.Xaml.Media.BitmapImage)转换为byte []数组? 没什么我已经试过工作....另一种可能的方案(如果BitmapImage的不能被转换为字节数组)是从网站上下载图像,然后将其转换为一个数组...

但我不知道我该怎么做......这将是非常好的,如果有人有一个想法。

目前的尝试:

        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基因不能正常工作....这是怎么回事?

谢谢

Answer 1:

在你的代码,你永远等待的BitmapImage从网站上加载图像,所以它不知道它的PixelWidth / PixelHeight当你访问它们。 使用例如-你可以等待它加载AsyncUI库通过调用“等待璧。 ()WaitForLoadedAsync ”。 如果您要访问,因为BitmapImage的解码像素不给你访问像素和目前还没有API的BitmapImage的转换为WriteableBitmap的这不会真正帮助你在这里。

您可以检查前面的问题的话题。 您将需要从网络中的图像文件的东西,如HttpClient.GetAsync() ,然后使用类似加载它BitmapDecoder 。



文章来源: Metro APP - BitmapImage to Byte[] or Download Image from Web and convert it to a Byte[] Array