博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android传递Bitmap的两种简单方式及其缺陷
阅读量:6157 次
发布时间:2019-06-21

本文共 1349 字,大约阅读时间需要 4 分钟。

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量级的,就不能正常工作了。



转载地址:http://oosfa.baihongyu.com/

你可能感兴趣的文章
MicroPython 1.8.6重新支持512K的模块
查看>>
docker部署springboot应用
查看>>
svn备份遇到的问题
查看>>
OpenStack-Pike(一)
查看>>
linux sort 命令详解
查看>>
优雅且高效的使用Chrome Developer Tools
查看>>
ios device provisioning
查看>>
swift编写命令行工具
查看>>
博客收藏
查看>>
spring的controller是单例模式,但是是多线程,各个线程之间不影响
查看>>
MySQL多实例实现半同步复制
查看>>
mySQL教程 第5章 插入 更新与删除数据
查看>>
js函数的内部属性---arguments,callee,caller
查看>>
关于C10K、异步回调、协程、同步阻塞
查看>>
米聊PK微信:微信是一朵奇葩
查看>>
ext 部署到 tomcat服务器下,通过http8080端口查看
查看>>
配置MYSQL远程连接
查看>>
centos下的源
查看>>
[一文一命令]find命令详解
查看>>
oracle利用分隔符,组合查询想表达的任何话
查看>>