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

    }

}

整體來說沒什么難點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM