使用将bitmap 转为base64,再将base64转为bitmap时出现黑屏经过
多次查找发现 应该是bimap转为base64时数据出现问题,原来在
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
这个中设置bitmap的格式为jpg格式时,一直转换失败,改为png格式就可以互转。
/**
* 将Bitmap转换成Base64字符串
*
* @param bit
* @return
*/
public String bitmapToBase64(Bitmap bitmap) {
String result = null;
ByteArrayOutputStream baos = null;
try {
if (bitmap != null) {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
baos.flush();
baos.close();
byte[] bitmapBytes = baos.toByteArray();
result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush();
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* base64转为bitmap
*
* @param base64Data
* @return
*/
public static Bitmap base64ToBitmap(String base64Data) {
byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
public static Bitmap getBitmapSize(Bitmap bitmap, float width_View, float height_View) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
// 设置想要的大小
float newWidth = width_View;
float newHeight = height_View;
// 计算缩放比例
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 取得想要缩放的matrix参数
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// 得到新的图片
Bitmap newBitMap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
if(bitmap!=null){
bitmap.recycle();
bitmap=null;
}
return newBitMap;
}