Activity跳转时传递Bitmap对象的实现

完美解决Activity之间传输Bitmap的三种方式 因为Intent只能传输数据容量很小的基本数据,当位图很大的时候,很有可能会出现传输错误 第一种:使用Intent,通过parcelable方式传递 //Activity One 【第一个活动ActivityA (传递)】 Intent intent = new Intent(this, Two.class); intent.putExtra("key", bitmap); //Activity Two 【第二个活动ActivityB (接收)】 //接收类型为 Bitmap ,通过getParce. 阅读详情

前言

    相信大家可能都了解Activity跳转时我们是可以传递参数的,比如使用Intent传递或者Bundle来传递,把当前Activity的一些信息传递给将要跳转到的新的Activity。但是不知道大家有没有想过,我们能不能传递一个Bitmap对象呢?可能有人会问为什么要传递一个Bitmap对象?好吧,因为我在开发中遇到了这样的问题才去说说这个。

    我前段时间想从网络获取图片显示在ImageView上,当显示好了之后,我希望点击ImageView可以跳转到新的Activity然后显示我点击的图片,所以我怎么得到我点击的ImageView上的图片呢?接下来就是我讲述的重点了!


实现

    开始不知道该怎么下手,百度了一段时间之后就大概明白了它的思路:

  • 得到ImageView对象上的图片,生成Bitmap对象
  • 把Bitmap对象转码成字符串
  • 把字符串存到SharedPreferences里面
  • 在新的Activity里面从SharedPreferences得到转码的字符串
  • 把字符串解码成Bitmap对象
  • 在ImageView上显示Bitmap图片

    思路还是挺简单的,下面我逐一介绍该怎么去实现,代码是死的,很容易就可以实现。

1-> 从ImageView得到Bitmap对象

Bitmap bitmap = ((BitmapDrawable)view.getDrawable()).getBitmap();

2 ->把Bitmap转码成字符串

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(CompressFormat.PNG, 50,baos);
        String imageBase64 = new String (Base64.encode(baos.toByteArray(), 0));

3->把字符串存到SharedPreferences里面

        SharedPreferences sPreferences = getSharedPreferences("share", Context.MODE_PRIVATE);
        Editor editor = sPreferences.edit();
        editor.putString("iamge", imageBase64);
        editor.commit();

4->在新的Activity里面从SharedPreferences得到转码的字符串

        SharedPreferences sPreferences = getSharedPreferences("share", Context.MODE_PRIVATE);
        String imageBase64 = sPreferences.getString("image", "");

5->把字符串解码成Bitmap对象

        byte[] byte64 = Base64.decode(imageBase64, 0);
        ByteArrayInputStream bais = new ByteArrayInputStream(byte64);
        Bitmap bitmap = BitmapFactory.decodeStream(bais);

6->在ImageView上显示Bitmap图片

view.setImageBitmap(bitmap);

总结

    步骤也就是那几步,不存在什么不懂的地方,当然如果你问我转码和解码的原理,那我只能说抱歉了,我是真的不知道。还有就是有的人可能会问,在你得到转码的字符串之后,把字符串直接传递过去不就可以了,为什么要保存在SharedPreferences里面呢?额。。这个问题问的好,之前没有想到吧,不过都一样啦,看大家具体怎么使用了,我把这个步骤封装成了一个类,使用起来就比较方便了。

下载源码

Human3.6M 数据集介绍及下载 360 万张 3D 人体姿势和对应图像11 名专业演员(6 男 5 女)7 个场景(讨论、吸烟、拍照以及打电话等等) 阅读详情

相关推荐

【FDTD运行引擎错误解决方法】

我用的是2024R1版的FDTD,第一次安装好的时候点“RUN”可以正常运行,后来不知道什么问题就无法运行了。我从网上找相关的解决办法,并未找到,将软件卸载重装,重启等方法都没有解决,后来在官网按照提示解决了,我把官网提供的方式和我的情况相结合,提供一个解决方式。提示:以下是本篇文章正文内容,下面案例可供参考最后说一下两个MPI和Local computer(不使用MPI)的区别使用MPI进行仿真可以显著提高计算速度和效率,特别是对于大规模和复杂的仿真任务,但需要额外的设置和配置。(多线程并行计算)

m0_57410975的博客 8171

安卓activity之间传递bitmap的3种方法心得

安卓activity之间传递bitmap的3种方法心得 (1)直接传递bitmap (2)传递图片的uri (3)传递图片的url

cafebar123的专栏 5526

Lumerical FDTD新手教程:5步搞定MMI波导光谱模拟(附避坑指南)

本文提供Lumerical FDTD新手教程,详细讲解5步完成MMI波导光谱模拟的实用方法,包括环境准备、结构建模、光源配置、仿真优化和结果分析。特别针对多模干涉耦合器(MMI)的模拟难点,提供避坑指南和优化策略,帮助光学工程师快速掌握FDTD仿真技术。

kite3的博客 359

android activity跳转传输bitmap出错的解决方案

activity跳转通过intent传输bitmap在有的情况下会报如下异常SecurityException: Unable to find app for caller android.app.ApplicationThreadProxy when publishing原因是因为intent.putExtra()方法,传了一个较大的bitmap,把bitmap缩小一些就可以了,网上压缩bitma

烈火苍穹的博客 1049

深入浅出:利用NXP S32K3xx的HSE模块实现OTA双分区(AB Swap)与安全回滚

本文深入解析NXP S32K3xx HSE模块在汽车电子OTA双分区架构中的工程实践,详细介绍了HSE模块如何通过AB Swap双分区机制实现固件安全升级与毫秒级回滚。内容涵盖内存重映射硬件原理、分区切换异常处理及寄存器级诊断方法,为开发高可靠嵌入式系统提供实战指导。

weixin_30919429的博客 795

实例讲解Simulink应用层开发CAN报文解包及CAN信号设置方法

本文通过讲解MCU CAN解包模块的模块设置、输入输出信号的设置及仿真测试验证,说明了CAN解包模块的设置方法、CAN解包模块输入输出信号的设置方法以及CAN解包模块的仿真测试及修正方法。在模型搭建过程中,建议养成一种搭建完成仿真测试验证的习惯,在模块阶段发现错误,解决错误,避免在后期模块集成之后报出大量错误,增加解决错误的工作量和难度。希望通过本文的介绍能给相关技术人员带来一些参考和帮助。

qq_43011586的博客 5681

Android开发 Activity之间传递图片(Bitmap)的方法

1.如何把图片从Activity传递给另一个Activity Intent intent=new Intent(MainActivity.this,OtherActivity.class); intent.putExtra("bitmap", bitmap); startActivity(intent); bitmap是在oncreate方法中获得的图片对象: Bitmap bitmap= BitmapFactory.decodeResource(getRe

彬sir哥的博客 2297

算法系列之十二:多边形区域填充算法--几种边标志填充算法

四、边界标志填充算法 在光栅显示平面上,多边形是封闭的,它是用某一边界色围成的一个闭合区域,填充是逐行进行的,即用扫描线逐行对多边形求交,在交点对之间填充。边界标志填充算法就是在逐行处理时,利用边界或边界颜色作为标志来进行填充的。准确地说,边界标志填充算法不是指某种具体的填充算法,而是一类利用扫描线连贯性思想的填充算法的总称。这类算法有很多种,本篇就介绍几种。 首先介绍一种以边为中心的边缘填充...

java开发指南博客 【转载】 1898

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); Bund...

weixin_33885253的博客 502

SAP Fiori 会话超时全解析:从 Launchpad 到 Identity Authentication 的统一策略

SAP Fiori会话超时机制解析与配置策略 本文深入探讨SAP Fiori项目中的会话超时机制,分析其对系统安全和用户体验的双重影响。文章系统拆解了SAP Fiori Launchpad与SAP Cloud Identity Services之间的会话超时工作原理,重点介绍了两种超时机制:服务器驱动的超时(通过SESSION_TIMEOUT_STOP_DATA_REFRESH参数控制)和UI驱动的超时(通过SESSION_TIMEOUT_INTERVAL_IN_MINUTES参数控制)。文中结合制造业产线

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

uniapp - H5人脸识别认证与活体检测功能(纯前端免费方案+微信sdk人脸识别)完整源码,微信公众号网页/h5端人脸识别功能人脸核身(微信方案提供后端spring boot+thinkphp源码

uniapp实现人脸认证,uniAPP h5手机拍照+人脸识别,免费人脸识别插件,前端人脸识别解决方案,uniapp H5人脸识别带前后摄像头,人脸识别在H5页面进行采集,微信公众号H5人脸核身,H5端人脸识别功能实现,免费h5人脸识别插件方案,微信公众号H5网页实现人脸识别,uniapp人脸监测,uniapp人脸生物监测,使用uniapp开发H5人脸采集功能/人脸识别功能,uniapp项目—h5端人脸采集功能实现,uniapp vue3人脸核身,H5活体检测认证,人脸认证张嘴摇摇头指引动作,人脸核身 微信

🏆 前端领域优质创作者 3809

Android上在两个Activity之间传递Bitmap对象

Android上在两个Activity之间传递Bitmap对象 因为我做Android应用的时间不长,所以当我第一次在android之间传递Bitmap对象的时候我直接用了Intent.putExtra的方法实现了,当时我选择的是一张图像的ROI区域,所以工作的很好,但是当我尝试将整个图片做...

chuifuhuo6864的博客 180

ROS2 机械臂末端刀具执行曲面路径规划入门教程

Noether工具路径规划系统摘要 Noether是一款用于网格曲面刀具路径规划的软件,支持喷涂、打磨、检测等机器人工艺流程。其核心流程分为三步:1)网格修改(平滑、分割等预处理);2)刀具路径规划(生成有序路径点序列);3)刀具路径修改(姿态调整等后期处理)。系统提供栅格规划和边界规划两种模式,支持自定义扩展。配套GUI工具可配置完整流程,包含网格处理、路径生成和可视化功能。通过示例演示了多组件网格处理、拼图边缘铣削等典型应用场景,并指导用户进行插件开发,实现圆柱体提取、摄像机悬停等定制化功能。系统采用模

机器人控制与仿真应用 916

Activity之间通过Intent传递对象

在Activity之间传递对象,这个对象须是可以序列化的,传递对象可以通过下面几种方式实现:类实现 Serializable,Java 提供的序列化的接口类实现 Parcelable,Android提供的在移动端的序列化接口,效率更高Serializable将类实现Serializable接口即可 public class CustomTest1 implements Serializable{...

SophieBryant的博客 819

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android Activity之间传递图片(Bitmap)的方法

Android Activity之间传递图片(Bitmap)的方法 2014年03月20日 17:00:16 雅阁驸马 阅读数:1864 标签: android开发 更多 个人分类: Android常见问题       Android开发中;Activity之间传递参数是常见的事;如果我们要在Activity之间传递图片; 1。MainActivity中包括一个ImageView;当我们...

jim1451的博客 3403

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Activity间通过Intent传递Bitmap对象

源Activity: intent.putExtra("img_bitmap", tempBitmap);   接收Activity中: Bitmap receive=(Bitmap)(getIntent().getParcelableExtra("img_bitmap"));

cnzhuzi的专栏 2243

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 传bitmap,Android_Android Activity之间传递图片(Bitmap)的方法,在Android开发中;Activity之间传 - phpStudy...

Android Activity之间传递图片(Bitmap)的方法在Android开发中;Activity之间传递参数是常见的事;如果我们要在Activity之间传递图片;1。MainActivity中包括一个ImageView;当我们点击ImageView时;把图片传递给另外一个ActivityMainActivity的主要代码:Intent intent=new Intent(MainActi...

weixin_29117669的博客 586

android 复制bitmap_Android Activity之间传递图片(Bitmap)的方法

在Android开发中;Activity之间传递参数是常见的事;如果我们要在Activity之间传递图片;1。MainActivity中包括一个ImageView;当我们点击ImageView时;把图片传递给另外一个ActivityMainActivity的主要代码:Intent intent=new Intent(MainActivity.this,TranActivity.class);int...

weixin_39776817的博客 121

Intent传递Bitmap

最近有人问道如何在两个activity跳转的过程中携带Bitmap跳转过去,在网上找了很多这样的解答,但是绝大多部分并没有达到我想要的结果,因此我将我实现的几行代码与大家一起分享。这个是第一个Activity中的代码 /* 我们在这里是要将bitmap的数据转化成byte数组 使用intent传递到第二个Activity中去 */ public class MainActivity exten

jeekmary的博客 5288

Android Activity之间传递图片(Bitmap)

在Android开发中;Activity之间传递参数是常见的事;如果我们要在Activity之间传递图片;1。MainActivity中包括一个ImageView;当我们点击ImageView时;把图片传递给另外一个Activity   MainActivity的主要代码: Intent intent=new Intent(MainActivity.thi...

360

三个activity之间跳转 数据传递_面试官:Intent能传递多大Size的数据?(附阿里答案)...

一、序作为 Android 开发,日常 Coding 时,最频繁的操作应该就是操作 App 内的一系列 Activity。而在 Activity 间传递数据,就需要借助 Intent。不少资料中写到,Intent 在 Activity 间传递基础类型数据或者可序列化的对象数据。但是 Intent 对数据大小是有限制的,当超过这个限制后,就会触发 TransactionTooLargeEx...

weixin_39793576的博客 521
上一篇: 数据表操作
下一篇: Android解析UniCode编码
潘建成
博客等级 码龄12年 139粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值