zoukankan      html  css  js  c++  java
  • Android传递Bitmap的两种简单方式及其缺陷

    Android传递Bitmap的几种简单方式

    一,通过Intent的Bundle。
    比如有两个activity,A,B,从A进入B。先在A中将Bitmap写进去:

    Resources res=getResources();
    		Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.ic_launcher);
    		
    		Bundle b = new Bundle();
            b.putParcelable("bitmap", bmp);
            
            Intent intent = new Intent(this, MainActivity2.class);
            intent.putExtras(b);
            startActivity(intent);

    然后在B中解析、接收Bitmap:

    Intent intent=getIntent();
    		Bundle b=intent.getExtras();
    		Bitmap bmp=(Bitmap) b.getParcelable("bitmap");

    此种传递方式的缺陷:只能传递相对较小适中大小的Bitmap,如果Bitmap大小尺寸过大就会引起代码崩溃。


    二,把Bitmap写进字节流。
    比如有两个activity,A,B,从A进入B。先在A中将Bitmap写进字节流传递出去:

    Resources res=getResources();
    		Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.ic_launcher);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
            byte[] bytes=baos.toByteArray();
            
            Bundle b = new Bundle();
            b.putByteArray("bitmap", bytes);
            
            Intent intent = new Intent(this, MainActivity2.class);
            intent.putExtras(b);
            startActivity(intent);

    然后在B中接收Bitmap的字节流并恢复出来:

    Intent intent=getIntent();
    		Bundle b=intent.getExtras();
    		byte[] bytes=b.getByteArray("bitmap");
    		
    		Bitmap bmp=BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

    此种传递方式的缺陷:缺陷同第一种方式相同。


    小结:

    以上两种方式均适用于适中、较小图片,如果图片过大如MB量级的,就不能正常工作了。

    
  • 相关阅读:
    从开心网的奴隶安抚与折磨想到员工积极性与人力成本的问题
    悲剧的做网站的,我们都没有认真的前行
    如何做生意
    Android Market中产品图标设计原则
    控制UpdataPanel中的GridView模板列控件同步刷新
    DataTable筛选
    IE6,7,8,FF兼容总结
    DevPress Grid 设置行样式
    SQL分组查询
    DevexPress checkedit 多选解决方案(原创)
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147308.html
Copyright © 2011-2022 走看看