• 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);
    
        }
    
    }

    整体来说没什么难点。

  • 相关阅读:
    [Go] golang http下返回json数据
    [Go] Golang练习项目-邮箱imap网页版客户端工具
    [Go] 提供http服务出现两次请求以及处理favicon.ico
    [Go] 转换编码处理网页显示乱码
    [Go] go转换gbk为utf8
    [Go] golang x.(type) 用法
    [GO] go语言中结构体的三种初始化方式
    [PHP] create_function() 代码注入问题已经被弃用
    [Git] 彻底删除github上的某个文件以及他的提交历史
    [javascript] vuejs的elementui实现父子iframe通信
  • 原文地址:https://www.cnblogs.com/tinyclear/p/6114955.html
Copyright © 2020-2023  润新知