none
关于图片拼接功能的实现以及WritaableBitmap对象内存占用的疑问 RRS feed

  • 问题

  • 研究了下博客园上徐老师的这篇文章,做了个简单的凭借图片的demo,但测试时发现如下一个非常严重的问题:在join函数里面的for循环中,每次都生成一个bitmap的示例,用完之后没释放(而且试过手动释放,貌似不行),当图片很大时,比方说我测试时用的2560*1920的图片(模拟器拍摄的),内存消耗非常严重。

    刚才想了一个方法,就是在初始化这个对象的时候就是初始化为一张小图,制定宽度为480,高度等比例缩放后变成360,于是就这样做:
    bitmap = new WriteableBitmap(0,0).FromStream(stream); //这里内存用光了
    double wr = spliceImageWidth / (double)bitmap.PixelWidth;
    int height = (int)(bitmap.PixelHeight * wr); 
    bitmap.Resize(spliceImageWidth, height, WriteableBitmapExtensions.Interpolation.Bilinear);

    我使用的是大图的数据流(Picture对象的GetImage方法),就算是要等比例缩放也需要先实例化一个bitmap对象,但这个对象是非常占用内存的,而且手动释放不了,所以还想请教下大家有没有好的解决方案,谢谢

    真是想不明白,为什么WriteableBitmap这么吃内存。而且还不能及时释放???
    2013年1月10日 7:22

全部回复