项目中有个功能是显示微信付款码,为了节省服务器存储,将图片以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 =Base64.decode(base64Code, Base64.DEFAULT);
FileOutputStream out = new FileOutputStream(savePath);
out.write(buffer);
out.close();
转码成bitmap
public Bitmap stringtoBitmap(String string) {
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) {
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转化的工具类:
//bitmap转为base64
public static String bitmapToBase64(Bitmap bi...