这个是在网上找的一个BitmapImage到数组的转换方法
public static byte[] BitmapImageToByteArray(BitmapImage bmp)
{
byte[] byteArray = null; try
{
Stream sMarket = bmp.StreamSource; if (sMarket != null && sMarket.Length > 0)
{
//很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。
sMarket.Position = 0; using (BinaryReader br = new BinaryReader(sMarket))
{
byteArray = br.ReadBytes((int)sMarket.Length);
}
}
}
catch
{
//other exception handling
} return byteArray;
}
我是这样调用的:
BitmapImage btm = new BitmapImage(new Uri("D:\\1.bmp"));
byte[] br = BitmapImageToByteArray(btm);
跟踪发现btm中只有路径D:\\1.bmp,而没有图像数据
求正确的解决
public static byte[] BitmapImageToByteArray(BitmapImage bmp)
{
byte[] byteArray = null; try
{
Stream sMarket = bmp.StreamSource; if (sMarket != null && sMarket.Length > 0)
{
//很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。
sMarket.Position = 0; using (BinaryReader br = new BinaryReader(sMarket))
{
byteArray = br.ReadBytes((int)sMarket.Length);
}
}
}
catch
{
//other exception handling
} return byteArray;
}
我是这样调用的:
BitmapImage btm = new BitmapImage(new Uri("D:\\1.bmp"));
byte[] br = BitmapImageToByteArray(btm);
跟踪发现btm中只有路径D:\\1.bmp,而没有图像数据
求正确的解决
/// 将文件转换成流
/// < /summary>
/// < param name="fileName">文件全路径< /param>
/// < returns>< /returns>
public static byte[] SetImageToByteArray(string fileName)
{
byte[] image = null;
try
{
FileStream fs = new FileStream(fileName, FileMode.Open);
FileInfo fileInfo = new FileInfo(fileName);
int streamLength = (int)fs.Length;
image = new byte[streamLength];
fs.Read(image, 0, streamLength);
fs.Close();
return image;
}
catch(Exception ex)
{
LogFile.writeLog(ex.ToString());
return image;
}
}
/// < summary>
/// 将byte转换成Image文件
/// < /summary>
/// < param name="mybyte">byte[]变量< /param>
/// < returns>< /returns>
public static System.Drawing.Image SetByteToImage(byte[] mybyte)
{
System.Drawing.Image image;
MemoryStream mymemorystream = new MemoryStream(mybyte, 0, mybyte.Length);
image = System.Drawing.Image.FromStream(mymemorystream);
return image;
}