1.最近在开发中遇到一种情况,服务器传过来的图片不是以下载地址方式传过来的,也是是以图片url传过来的,而是以base64加密后的字符串传过来的,这种形式:
String baseString =
"/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK
CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIAroB9AMBEQACEQED"
下面介绍下解析方法。
首先需要添加文件存储权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2.base64解析
BASE64Decoder decoder = new BASE64Decoder();
byte[] bitmapArray = decoder.decodeBuffer(baseString ); //base64解密
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);//转换成bitmap
if(bitmap!=null) {
imagevew.setImageBitmap(bitmap);
}else {
imagevew.setImageResource(R.drawable.newtxl_list_tx);//如果解析失败显示默认图片
}
/**
*也可使用Glide显示bitmap glide版本
* implementation 'com.github.bumptech.glide:glide:4.5.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'
**/
RequestOptions options = new RequestOptions()
.error(R.drawable.newtxl_list_tx)//加载图片失败显示
.placeholder(R.drawable.newtxl_list_tx)//未加载出来显示
.skipMemoryCache(false);
Glide.with(context)//context
.load(bitmap)//图片地址
.apply(options)
.into(imageview);//Imgeview
4.basedecoder.jar (eclipse自带,AS需要加入)下载地址:链接: https://pan.baidu.com/s/16Aj81AaAFuOvMm3nP8Z6WA 提取码: ba6q
网友评论