byte[]转换为bitmapimage:
{
bitmapimage bmp = null ;
try
{
bmp = new bitmapimage();
bmp.begininit();
bmp.streamsource = new memorystream(bytearray);
bmp.endinit();
}
catch
{
bmp = null ;
}
return bmp;
}
bitmapimage转换为byte[]:
{
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;
}
Silverlight - 将BitmapImage转化为Stream或byte数组
Admin
2010年8月5日 名人名言:自己动手,自己动脚,用自己的眼睛观察——这是我们实验工作的最高原则。——巴甫洛夫
Silverlight - 将BitmapImage转化为Stream或byte数组
先将BitmapImage转化为WriteableBitmap,然后得到base64字符串,然后可以得到base64的byte[]数组,再然后您可以把byte[]变成Stream
关键代码:
WriteableBitmap wb = new WriteableBitmap(img.Source as BitmapSource);//将Image对象转换为WriteableBitmap
byte[] b = Convert.FromBase64String(GetBase64Image(wb));//得到byte数组
将byte[]还原为图片:
byte[] b = ...//这里的b为上面生成的base64编码的byte数组
MemoryStream ms = new MemoryStream(b);
BitmapImage bitImage = new BitmapImage();
bitImage.SetSource(ms);
img2.Source = bitImage;
对于WP7中图形处理有关WriteableBitmap和BitmapImage之间的相互转换,Zune123给大家几个简单实用的方法。
一、WriteableBitmap转为BitmapImage对象
1 | var bi= new BitmapImage(); |
2 | bi.SetSource(wb.ToImage().ToStream()); //其中wb是WriteableBitmap对象。 |
二、BitmapImage转为WriteableBitmap对象
1 | //这里就转换完成了 |
2 | WriteableBitmap wb = new WriteableBitmap(bi.Source as BitmapSource); |
三、将WriteableBitmap转为字节数组
1 | byte [] b = Convert.FromBase64String(GetBase64Image(wb)); |
2 | //这里通过base64间接处理,效率不是很高。 |
四、将字节数组转为BitmapImage对象
1 | MemoryStream ms = new MemoryStream(b); // b为byte[] |
2 | BitmapImage bi = new BitmapImage(); |
3 | bi.SetSource(ms); |
4 | img.Source = bi; //这里img为XAML的Image对象 |
写的比较简单,希望对WP7开发的初学者有些帮助。