bitmapimage与byte[]相互转换


作者:飘遥(Zhenxing Zhou) tags: WPF Image byte WPF BitmapImage 有时要实现bitmapimage与byte[]相互转换,这里实现两个静态方法,直接调用即可。

byte[]转换为bitmapimage:
public static bitmapimage bytearraytobitmapimage(byte [] bytearray)
{
    bitmapimage bmp
= null
;

    
try

    {
        bmp
= new
bitmapimage();
        bmp.begininit();
        bmp.streamsource
= new
memorystream(bytearray);
        bmp.endinit();
    }
    
catch

    {
        bmp
= null
;
    }

    
return
bmp;
}

bitmapimage转换为byte[]:
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;
}




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对象

1var bi= new BitmapImage();
2bi.SetSource(wb.ToImage().ToStream()); //其中wb是WriteableBitmap对象。

二、BitmapImage转为WriteableBitmap对象

1//这里就转换完成了
2WriteableBitmap wb = new WriteableBitmap(bi.Source as BitmapSource);

三、将WriteableBitmap转为字节数组

1byte[] b = Convert.FromBase64String(GetBase64Image(wb));
2//这里通过base64间接处理,效率不是很高。

四、将字节数组转为BitmapImage对象

1MemoryStream ms = new MemoryStream(b); // b为byte[]
2BitmapImage bi = new BitmapImage();
3bi.SetSource(ms);
4img.Source = bi; //这里img为XAML的Image对象

写的比较简单,希望对WP7开发的初学者有些帮助。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值