当前位置: 首页 > news >正文

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



转载于:https://www.cnblogs.com/hehehaha/p/6147308.html

相关文章:

  • Android中的mvp
  • 前端初始化项目对axios的封装和token的存储应用以及config.js代理的配置 比较全的了。
  • 开机自启动redis
  • 在一个div标签中平行放置两个echarts 环形图
  • node-webkit,html打包成桌面应用,pc应用
  • 【HTML5】Web存储
  • 利用 vuex写一个todoList
  • Java日志组件2---Log4j(org.apache.log4j.Logger)
  • react项目搭建
  • mybatis3.0 配置等值连接两种方式:resultMap和resulttype
  • react官方脚手架安装
  • 怎么用ChemDraw 15.1 Pro绘制彩色结构
  • react实现打印功能
  • 关于CreateProcess函数一些经验
  • 前端解决跨域 cors
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • @angular/forms 源码解析之双向绑定
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • JSONP原理
  • LeetCode算法系列_0891_子序列宽度之和
  • Python进阶细节
  • Python学习之路13-记分
  • React+TypeScript入门
  • tensorflow学习笔记3——MNIST应用篇
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 复习Javascript专题(四):js中的深浅拷贝
  • 构造函数(constructor)与原型链(prototype)关系
  • 后端_ThinkPHP5
  • 基于遗传算法的优化问题求解
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 微信小程序:实现悬浮返回和分享按钮
  • Spring第一个helloWorld
  • 湖北分布式智能数据采集方法有哪些?
  • # Java NIO(一)FileChannel
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (09)Hive——CTE 公共表达式
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (蓝桥杯每日一题)love
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)appium-desktop定位元素原理
  • (译) 函数式 JS #1:简介
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET Reactor简单使用教程
  • .NetCore项目nginx发布
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • ::前边啥也没有
  • ??javascript里的变量问题
  • ??在JSP中,java和JavaScript如何交互?