方法1:
public static BitmapImage GetImage(byte[] buffer)
{
if (buffer == null || buffer.Length <= 0)
return null;
BitmapImage bitmap = null;
try
{
bitmap = new BitmapImage();
bitmap.DecodePixelHeight = 200; // 确定解码高度,宽度不同时设置
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
using (Stream ms = new MemoryStream(buffer))
{
bitmap.StreamSource = ms;
bitmap.EndInit();
bitmap.Freeze();
ms.Dispose();
}
}
catch (Exception ex)
{
LogManager.Log.WriteLog(LogFile.Error, string.Format("{0}", ex));
bitmap = null;
}
return bitmap;
}
方法2:
public static BitmapImage GetImage(byte[] buffer)
{
if (buffer == null || buffer.Length <= 0)
return null;
BitmapImage bitmap = new BitmapImage();
bitmap.DecodePixelHeight = 200; // 确定解码高度,宽度不同时设置
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
using (Stream ms = new MemoryStream(buffer))
{
bitmap.StreamSource = ms;
bitmap.EndInit();
bitmap.Freeze();
ms.Dispose();
}
return bitmap;
}
方法1、方法2 都一样,只是在方法1中多了一个try{} catch(){} 。但在使用过程中,调用方法2的时候,图片byte[] 转换成 BitmapImage 的时候,就会出错:
Exception object: 00000000031b78b8
Exception type: System.IO.IOException
Message: 无法从流中读取。
而同样的图片,在调用方法1 的时候,就不会有问题,求教有什么不同?
你看看方法1是不是返回null,你方法1已经把异常埋了
嗯,是的,谢谢