王立平-Android中對映像進行Base64編碼,-androidbase64

來源:互聯網
上載者:User

王立平-Android中對映像進行Base64編碼,-androidbase64

  1.  // ------------------base64-------------------//
    public String bitmaptoString(Bitmap bitmap) {


    // 將Bitmap轉換成字串


    String string = null;


    ByteArrayOutputStream bStream = new ByteArrayOutputStream();


    bitmap.compress(CompressFormat.PNG, 100, bStream);


    byte[] bytes = bStream.toByteArray();


    string = Base64.encodeToString(bytes, Base64.DEFAULT);


    return string;


    }


    // --------------base64-----------------//
    public Bitmap stringtoBitmap(String string) {


    // 將字串轉換成Bitmap類型


    Bitmap bitmap = null;


    try {


    byte[] bitmapArray;


    bitmapArray = Base64.decode(string, Base64.DEFAULT);


    bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,


    bitmapArray.length);


    } catch (Exception e) {


    e.printStackTrace();


    }


    return bitmap;


    }

進行base64解碼的思路

關於這個編碼的規則:
①.把3個字元變成4個字元..
②每76個字元加一個分行符號..
③.最後的結束符也要處理..
對於①就是 4個字元32位..有個字元..24位...相差8個位..這8個位..會平均分給每個位元組的高兩位..則好2*4 = 8.嗎...

下面是我用C++實現的...帶有注釋...通過移位操作實現的...對移位操作不熟悉的朋友可能有點吃力了...

void base642(char * string ,char * pch)
{
int i = 0;
BYTE b1 ,b2 ,b3;

CAtlStringA str(string);
int len = str.GetLength();

char b;
do
{
//

b1 = string[i++];

//b1 右移2位..高2位清0...
//b1.剩下2位要放在第2個字元中..
b = BASE64TABLE[b1>>2];
//得到第1個字元..
*pch ++ = b;
//判斷是不是該換行了..76個字元要換行.放在這裡..避免i=1的時候換行..
if(i % 76 == 0)
{
*pch ++ = '\r';
*pch ++ = '\n';
}

b2 = string[i++];

//(b1的最後2位要放在b2的第6位(7.8兩位要填充0))b1.要左移4位... b2 右移4位...然後相加..在把最高2位清0..
//b2.剩下4位.要放在第3個字元中...
b = BASE64TABLE[((b1 << 4) + (b2 >> 4)) &(0x3f)];
//得到第2個字元..
*pch ++ = b;

//如果沒有第3個字元了..那就停止迴圈了..
////這裡不能是>= ...因為還要處理最後一個0x00結束符..len不包含最後結束符...
if(i > len)
break;//①

b3 = (BYTE) string[i++];

//b2的4位要放在第3個字元的第6位...b2.要左移2位...b3要右移6位..高2位放在此字元的最後兩位..
//b3 就剩下了6個字元...
b = BASE64TABLE[((b2 << 2) + (b3 >>6)) &(0x3f)......餘下全文>>
 
java將網狀圖片進行base64編碼

String s = new sun.misc.BASE64Encoder().encode(url.getByte());
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.