Android bitmap转base64 图片出现黑色背景

318 阅读1分钟

1.将 png 图片 bitmap 转为 base64,再将 base64 转为 bitmap 后对比原图,透明部分出现了黑色背景

2.如果发现转换后的图片存在黑边,可以将图片格式改为 png

public class Base64Util {

public static String bitmap2Base64(Bitmap bitmap, int compress,Bitmap.CompressFormatformat{
    if (bitmap == null) {
        return null;
    }

    String result = null;
    ByteArrayOutputStream baos = null;
    try {
        baos = new ByteArrayOutputStream();
        bitmap.compress(format != null ? format : Bitmap.CompressFormat.JPEG, compress, baos);

        baos.flush();
        baos.close();

        byte[] bitmapBytes = baos.toByteArray();
        result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (baos != null) {
                baos.flush();
                baos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return result;
}

/**
 * base64 转为 bitmap
 *
 * @param base64Data
 * @return
 */
public static Bitmap base642Bitmap(String base64Data) {
    if (TextUtils.isEmpty(base64Data)) {
        return null;
    }
    
    byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
    return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}

}

3.需要的地方调用 Bitmap bitmap = Base64Util.bitmap2Base64(source, 100, Bitmap.CompressFormat.PNG);