Windows Phone 8.1商店应用程序中的BitmapImage下载失败

本文关键字:BitmapImage 下载 失败 应用程序 Phone Windows | 更新日期: 2023-09-27 18:26:55

我正在尝试从本地存储读取BitmapImage。路径由FileOpenPicker选择。但是当我尝试将它转换为Byte[]时,它失败了。由于image.PixelWidth返回"0",所以图像似乎根本没有下载。

StorageFile storageFile = args.Files[0];
//var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
//var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
//await bitmapImage.SetSourceAsync(stream);
var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream);
BitmapImage wb = new BitmapImage(new Uri(storageFile.Path));
byte[] pixeBuffer = null;
using (MemoryStream ms = new MemoryStream())
{
     WriteableBitmap wbit = new WriteableBitmap(wb.PixelWidth,wb.PixelHeight);
     Stream s1 = wb.PixelBuffer.AsStream();
     s1.CopyTo(ms);
     pixeBuffer = ms.ToArray();
}

程序在崩溃

WriteableBitmap wbit = new WriteableBitmap(wb.PixelWidth,wb.PixelHeight);

我已经检查过storageFile.Path指向正确的路径,我也从互联网上尝试过URL,但结果相同。

我是C#的新手,不知道如何触发windows phone的异常处理,如果有帮助,请指导我。

Windows Phone 8.1商店应用程序中的BitmapImage下载失败

调用解码器后,您应该执行以下操作:

try
{
    PixelDataProvider provider = await decoder.GetPixelDataAsync(decoder.BitmapPixelFormat, decoder.BitmapAlphaMode, new BitmapTransform(), ExifOrientationMode.RespectExifOrientation, ColorManagementMode.ColorManageToSRgb);
    byte[] pixelBuffer = provider.DetachPixelData();
}
catch(Exception ex)
{
    Debug.WriteLine(ex);
}

try/catch块是您希望在代码中捕获异常的方式,所以我也包含了它。