添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

项目中有个功能是显示微信付款码,为了节省服务器存储,将图片以Base64的形式存储,客户端接收到后将Base64转换成图片并加载,但是不要存放大图,在网上看到的大多都是使用了一个java库( import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
),其实Android自带有转换的类( import android.util.Base64;

    public static Bitmap stringToBitmap(String string) {
        Bitmap bitmap = null;
        try {
            byte[] bitmapArray = Base64.decode(string.split(",")[1], Base64.DEFAULT);
            bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);
        } catch (Exception e) {
            e.printStackTrace();
        return bitmap;
 

注意:
需要去掉字符串的data:image/png;base64,

转码并保存成文件

    public static void decoderBase64File(String base64Code,String savePath) throws Exception {
        //byte[] buffer = new BASE64Decoder().decodeBuffer(base64Code);
        byte[] buffer =Base64.decode(base64Code, Base64.DEFAULT);
        FileOutputStream out = new FileOutputStream(savePath);
        out.write(buffer);
        out.close();

转码成bitmap

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; public String bitmaptoString(Bitmap bitmap) { //将Bitmap转换成字符串 String string = null; ByteArrayOutputStream bStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, bStream); byte[] bytes = bStream.toByteArray(); string = Base64.encodeToString(bytes, Base64.DEFAULT); return string;

参考文章:
+ Android Base64字符串转换成图片
+ 安卓中图片和Base64编码字符集的相互转换
+ android bitmap和base64之间的转换

代码实现的功能:本地图片 --> 输入流 --> byte[] --> Base64为String --> Base64 将这个String 为byte[] --> Bitmap --> 显示到ImageView ===注释详细!原创哦 请求头 responseType: “blob” 一定要。前面加固定的前缀 data:image/png;将后台给返回的base64直接拼接的img的:src上。的type一定要写。否则后的base64打不开。 Android 通过Base64上传图片到服务器 之前做上传图片是采用HttpServlet上传,不过用了一下Base64上传图片后,感觉比HttpServlet方便很多,大家也可以跟着尝试一下。 前台图片处理:(传Bitmap对象即可) * 通过Base32将Bitmap转换成Base64字符串 * @param bit * @return public String Bitmap2StrByBase64(Bitmap bit){ ByteArrayOutputStream bos=new ByteArrayOutputStream(); bit.compr public static Bitmap losslessScale(String path,int quality){ Bitmap bitmap = BitmapFactory.decodeFile(path); ByteArrayOutputStream baos = new Byte... 场景项目有个功能是显示微信付款码,为了节省服务器存储,将图片Base64的形式存储,客户端接收到后将Base64转换成图片并加载,但是不要存放大图,在网上看到的大多都是使用了一个java库(import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;),其实Android自带有换的类(import android.util.Bas... hi,大家好,我是开发者FTD。相信很多同学在工作,经常会用到Base64编码,那大家知道为什么会有Base64编码吗?我们为什么要使用它呢,它又是怎么实现的呢?下面就让我们来一起深入探究一下Base64编码吧。Base 家族在开始之前,我们先给大家介绍一下Base家族。虽然我们在工作使用最多的是Base64,但是Base家族可不止是只有Base64,除了Base64之外,Base家族还有Ba... 在android开发我们经常会实现例如一些图片等流文件的上传。接下来介绍一种换为Base64 然后通过post的参数形式上传./*** 图片文件Base64字符串* @param path 文件所在的绝对路径加文件名* @return*/private String fileBase64String(String path){try {FileInputStream fis = new Fi... 近期,公司做安卓Nfc刷卡支付的功能。其有个需求是用户需要确认,因此要显示绑定的头像图片。 由于调用其他机构的支付返回系统,所以返回的并不是服务器存储的图片,而是Base64的字符串,只能在客户端转换成图片了。 写一个Base64化的工具类: //bitmapbase64 public static String bitmapToBase64(Bitmap bi...