2012-07-20 57 views
0

我正在城市应用程序中工作。如何获取城域(UWP)中BitmapImage的宽度和高度?

而且我使用BitmapImage,其中由于构造我设置了Uri,但我意识到,所有的时间PixelWidthPixelHeight回报0(我也该Uri是正确的验证)。

我找不到另一个返回这些属性的类。我在想如果有办法通过字节数组或类似的东西来获取这些数据。你怎么看?

+0

假设您正在从本地文件系统/资源加载,请尝试等待,直到加载位图的下一个主线程循环。如果来自网络/ Internet源,则可能需要等待一段时间它下载。 – 2012-07-20 01:40:34

回答

1

检查CacheOption属性并将其设置为BitmapCacheOption.None。您也可以尝试转换为WriteableBitmap。 如果我说的不是真的,对不起,因为我无法测试。 XAML(WPF只)的xD

+0

我已经将CacheOption设置为BitmapCacheOption.None并且不起作用 – 2012-07-20 03:33:20

+0

请记住,在将图像传递到源代码之前,必须先更改BitmapCache。那么试着施放一个WriteableBitmap .... – 2012-07-20 13:50:43

0

BitmapImage返回0PixelWidthPixelHeight如果未加载图像。图像仅在实际使用时加载,例如分配给Image.Source并显示。这是...有问题。使用BitmapCacheOption.None没有帮助,它只适用于WP7。

正确的解决方案是使用BitmapDecoder

var stream = await storageFile.OpenReadAsync(); 
var decoder = await BitmapDecoder.CreateAsync(stream); 
var size = new BitmapSize { Width = decoder.PixelWidth, Height = decoder.PixelHeight }; 

实测值this solution on MSDN forums