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的异常处理,如果有帮助,请指导我。
调用解码器后,您应该执行以下操作:
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块是您希望在代码中捕获异常的方式,所以我也包含了它。