今天在压缩一个图片后,需要对String进行Base64转换,遇到这个问题,找了半天也没有解决,后来想一想是不是特殊符号或者换行符的问题,不是不知道,一试吓一跳……终于搞定了;
用Base64算法加密,当字符串过长(一般超过76)时会自动在中间加一个换行符,字符串最后也会加一个换行符。导致和其他模块对接时结果不一致。
安卓解决方法:
将
android.util.Base64.encodeToString(input, Base64.DEFAULT)
换成
android.util.Base64.encodeToString(input, Base64.NO_WRAP);
/**
* 转为base64
*
* @param bitmap
* @return
*/
@Nullable
private static String getBaseString(Bitmap bitmap) {
//转为base64
String result = null;
ByteArrayOutputStream baos = null;
try {
if (bitmap != null) {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
baos.flush();
baos.close();
byte[] bitmapBytes = baos.toByteArray();
result = Base64.encodeToString(bitmapBytes, Base64.NO_WRAP);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush();
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}