王立平-Android中對映像進行Base64編碼,-androidbase64
- // ------------------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());