2:Bitmap和Base64转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2:Bitmap和Base64转换相关的知识,希望对你有一定的参考价值。

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.util.Base64;

public class Base64Utils {
    public static void gcBitmap(Bitmap bitmap) {
        if (bitmap != null && !bitmap.isRecycled()) {
            bitmap.recycle(); // 回收图片所占的内存
            bitmap = null;
            System.gc(); // 提醒系统及时回收
        }
    }

    /**
     * 
     * @Title: bitmapToBase64
     * @Description: TODO(Bitmap 转换为字符串)
     * @param @param bitmap
     * @param @return 设定文件
     * @return String 返回类型
     * @throws
     */

    @SuppressLint("NewApi")
    public static String bitmapToBase64(Bitmap bitmap) {

        // 要返回的字符串
        String reslut = null;

        ByteArrayOutputStream baos = null;

        try {

            if (bitmap != null) {

                baos = new ByteArrayOutputStream();
                /**
                 * 压缩只对保存有效果bitmap还是原来的大小
                 */
                bitmap.compress(CompressFormat.JPEG, 30, baos);

                baos.flush();
                baos.close();
                // 转换为字节数组
                byte[] byteArray = baos.toByteArray();

                // 转换为字符串
                reslut = Base64.encodeToString(byteArray, Base64.DEFAULT);
            } else {
                return null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            try {
                if (baos != null) {
                    baos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return reslut;

    }

    /**
     * 
     * @Title: base64ToBitmap
     * @Description: TODO(base64l转换为Bitmap)
     * @param @param base64String
     * @param @return 设定文件
     * @return Bitmap 返回类型
     * @throws
     */
    public static Bitmap base64ToBitmap(String base64String) {
        /*
         * byte[] decode = Base64.decode(base64String, Base64.DEFAULT); YuvImage
         * yuvimage = new YuvImage(decode, ImageFormat.NV21, 20, 20, null);//
         * 20、20分别是图的宽度与高度 ByteArrayOutputStream baos = new
         * ByteArrayOutputStream(); yuvimage.compressToJpeg(new Rect(0, 0, 20,
         * 20), 80, baos);// 80--JPG图片的质量[0-100],100最高 byte[] jdata =
         * baos.toByteArray(); Bitmap bitmap =
         * BitmapFactory.decodeByteArray(jdata, 0, jdata.length);
         */

        byte[] decode = Base64.decode(base64String, Base64.DEFAULT);
        Bitmap bitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);

        return bitmap;
    }

 

以上是关于2:Bitmap和Base64转换的主要内容,如果未能解决你的问题,请参考以下文章

Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码

java 把一个网络图片转换为base64

java将base64转换成图片并保存在指定路径下ImageIO.write(bi1,"png",w2)提示image==null

客户端通过base64上传bitmap服务器

Android base64string转bitmap

为啥Bitmap to Base64 String在android的webview上显示黑色背景?