Android本地图片压缩+转base64
16lz
2022-05-29
// 根据路径获得图片并压缩,返回bitmap用于显示 private static Bitmap getSmallBitmap(String filePath) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, 480, 800); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath, options); } //计算图片的缩放值 private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height / (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; } return inSampleSize; } //把bitmap转换成String public static String bitmapToString(String filePath) { Bitmap bm = getSmallBitmap(filePath); ByteArrayOutputStream baos = new ByteArrayOutputStream(); //1.5M的压缩后在100Kb以内,测试得值,压缩后的大小=94486字节,压缩后的大小=74473字节 //这里的JPEG 如果换成PNG,那么压缩的就有600kB这样 bm.compress(Bitmap.CompressFormat.JPEG, 40, baos); byte[] b = baos.toByteArray(); Log.d("d", "压缩后的大小=" + b.length); return "data:img/jpg;base64," + Base64.encodeToString(b, Base64.DEFAULT); }
调用
String base64str = bitmapToString(path);//path 图片路径
更多相关文章
- Android改变系统自带ProgressDialog的文字大小
- Android之View的视图测量过程
- Android(安卓)改变ImageView图片的Bitmap大小
- Android将assets中的zip压缩文件解压到SD卡
- android在java中动态改变控件大小
- android camera根据屏幕图像大小设置显示
- Java(Android)对文件全文生成MD5摘要
- Android(安卓)zip文件压缩解压缩
- Android(安卓)在Activity中获取控件尺寸的方法