Base64技术:把对象转变成字符串
需求:在安卓移动端和服务器进行数据交互的时候,有些时候需要上传,下载文件。如果所有的参数都变成字符串,会更加方便。
原理:Base64只是把byte[]数组进行了编码,然后再解码的过程,文档内容无法直接读取。从某些方面来说,进行了“加密”。经过测试一张图片转变成字符串大概会较少1半的大小。
其实我个人觉得不使用Base64 自己通过getByte()和new String() 应该也没问题。编码的格式只要是不会丢失数据的即可。
对于class对象,我们也可以通过ObjectOutputStream和ObjectInputStream来实现。这样都可以转变成字符串的方式进行传输。
下面是一个Demo,如何把一个图片转变成字符串;把字符串转变成图片。
- package com.itheima.base64demo_8;
- import java.io.ByteArrayOutputStream;
- import java.io.ObjectOutputStream;
- import java.io.OutputStream;
- import android.os.Bundle;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.Bitmap.CompressFormat;
- import android.graphics.BitmapFactory;
- import android.graphics.drawable.Drawable;
- import android.util.Base64;
- import android.view.Menu;
- import android.widget.ImageView;
- public class MainActivity extends Activity {
- private ImageView mIv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mIv = (ImageView) findViewById(R.id.iv);
- // 1.从drawable-hdpi得到一个图片
- Bitmap sourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bbb);
- // 2.转换成byte[]
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- sourceBitmap.compress(CompressFormat.JPEG, 100, out);
- byte[] sourceBitmapByteArr = out.toByteArray();
- // 3.base64-->string
- String bitmapString = Base64.encodeToString(sourceBitmapByteArr, Base64.DEFAULT);
- System.out.println("bitmapString: " + bitmapString);
- // 4.base64-->string-->byte[]
- byte[] bitmapDecodeByteArr = Base64.decode(bitmapString, Base64.DEFAULT);
- // 5.byte[]-->bitmap
- Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapDecodeByteArr, 0, bitmapDecodeByteArr.length);
- // 6.bitmap设置为mIv的src,验证是否可以这样进行传递
- mIv.setImageBitmap(bitmap);
- }
- }
整体来说没什么难点。
Base64技术:把对象转变成字符串的更多相关文章
- js 将json对象转成字符串
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 前台 JSON对象转换成字符串 相互转换 的几种方式
在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ ...
- js将对象转成字符串-支持微信
最近写一个微信项目时用到了 把对象转成字符串,因为我需要把它存在cookie中,碰到了一些问题,在这里分享一下. 要转换的就是这货~ var FBinf = { "workPlacesCod ...
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值
一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...
- js中对象转化成字符串、数字或布尔值的转化规则
js中对象可以转化成 字符串.数字.布尔值 一.对象转化成字符串: 规则: 1.如果对象有toString方法,则调用该方法,并返回相应的结果:(代码通常会执行到这,因为在所有对象中都有toStrin ...
- Javascript里面的时间处理:将时间戳或时间对象转成字符串格式
问题背景:想把一个时间直接转成字符串格式 通过查api发现有个toLocaleString(),根据本地时间格式,把 Date 对象转换为字符串 new Date().toLocaleString() ...
- 如何将javascript对象转换成字符串
将后台程序(如php)发送过来的json数据转化为javascript的数组或者对象的方法十分简单,代码如下: 1 // 假设后台发送的json数据为 '{a:2,b:1}' 存储于str中 2 va ...
- JSON对象转换成字符串【JSON2.JS】
下载地址 https://github.com/douglascrockford/JSON-js JSON.JS和JSON2.JS的区别 JSON.JS使用的方法名称不同,用的是toJSONStrin ...
- vue中如何将时间对象转换成字符串
借鉴element-admin中封装好的方法 import { parseTime } from '@/utils'// 在utils目录下的index.js文件中,方法如下 /** * Parse ...
随机推荐
- 【转】如何将ACCESS数据库后缀名accdb改为mdb
office 2007中的ACCESS数据库保存时,默认的后缀名是*.accdb, 但是在数据库编程中,用到的后缀名却是*.mdb, 不能直接将后缀名由 accdb 改为 mdb,虽然没有出错,但是编 ...
- linux内存管理(repost)
一 为什么需要使用虚拟内存 大家都知道,进程需要使用的代码和数据都放在内存中,比放在外存中要快很多.问题是内存空间太小了,不能满足进程的需求,而且现在都是多进程,情况更加糟糕.所以提出了虚拟内存,使得 ...
- IO流数据读写总结
1.用java自带的IO读写方法 官方API网站:http://docs.oracle.com/javase/7/docs/api/ 2.Apache的Commons-io-2.4.jar中的方法,参 ...
- STM32普通定时器(TIM2-7)的时钟源
STM32普通定时器(TIM2-7)的时钟源
- IIS优化服务器性能导致QuartZ任务未运行
问题: IIS 为优化服务器性能,会自动对它认为休眠的应用程序进行资源回收,资源回收将会导致网站应用程序关闭. 解决方案: 1. 设置闲置超时为0,固定回收时间间隔为0,即IIS不主动回收闲置进程 ...
- C#变量修饰符
访问修饰符 关键字包括:internal,public,protected和private,用于设置变量的访问级别. public 变量可以做为它所属的类型的一个字段,可以在任何地方访问它. i ...
- use ContourPlot-使用ContourPlot
use ContourPlot to draw implicit function graphics 使用ContourPlot 画隐函数图像 for example $x^{3}+y^{3}-3xy ...
- 对dpkg: error processing package xxx (--configure) 的处理
这个问题是在在安装Deepdive时候碰到的,具体来说在执行 sudo apt-get update碰到的sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_ ...
- C#之委托(函数参数传递)【转】
原文:http://blog.csdn.net/wangdan199112/article/details/18796527 在学委托这块儿的时候,函数参数这块不是很理解,于是针对一个例子做了深入的理 ...
- MQ队列堆积太长,消费不过来怎么办(转)
转自:http://windwrite.com/archives/603 我们现有的业务就面临此问题,消息生产太快,消费不过来,导致队列堆积很长,把服务器内存耗尽,这时RabbitMQ的处理能力很低下 ...