Base64 是传输字节码的编码, Android 开发过程中, 图片的加载多数是请求 URL 路径或者加载本地的图片, 当然也有加载服务器用 Base64 编码过的图片, 比如图形验证码. 当然图形验证码我们 Android 也可以用代码写, 这里就介绍 Android 端加载 Base64 编码的图片. 话不多说, 直接上代码:
ImageView 加载 Base64 编码图片, 代码:
- //Base64 编码地址 (地址太长, 省略)
- String base64String = "data:image/jpeg;base64,/9j/4AAQSkZJRgA...........";
- // 将 Base64 编码字符串解码成 Bitmap
- byte[] decodedString = Base64.decode(base64String.split(",")[1], Base64.DEFAULT);
- Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
- // 设置 ImageView 图片
- imageView.setImageBitmap(decodedByte);
编码后的图片会有 "data:image/;base64," 标识, 在进行解码时我们需要去掉这一部分, 否则会导致解码失败. base64String.split(",")[1] 就是获取除 "data:image/;base64," 后的地址.
加载 Base64 编码的图片就是上述的方法, 有时我们还需要对图片进行编码与解码, 下面就列出方法.
编码:
- public String encodeImageToString(Bitmap bitmap) {
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- // 读取图片到 ByteArrayOutputStream
- bitmap.compress(Bitmap.CompressFormat.PNG, 40, outputStream); // 参数如果为 100 那么就不压缩
- byte[] bytes = outputStream.toByteArray();
- String strImg = Base64.encodeToString(bytes, Base64.DEFAULT);
- return strImg;
- }
解码:
- public Bitmap sendImage(String imgAddress) {
- byte[] input = Base64.decode(imgAddress, Base64.DEFAULT);
- Bitmap bitmap = BitmapFactory.decodeByteArray(input, 0, input.length);
- return bitmap;
- }
- ----------------------------------------------------------------------------------------------------------------------------------
以下是个人公众号 (longxuanzhigu), 之后发布的文章会同步到该公众号, 方便交流学习 Android 知识及分享个人爱好文章:
longxuanzhigu
来源: http://www.jianshu.com/p/a72a765bf1e9