/** * 根据图片路径压缩图片并返回压缩后图片的路径 * @param mCurrentPhotoPath * @param context * @return */ public static String compressImage(String mCurrentPhotoPath, Context context) { if (mCurrentPhotoPath != null) { try { File f = new File(mCurrentPhotoPath); Bitmap bm = getSmallBitmap(mCurrentPhotoPath); //获取文件路径 即:/data/data/***/files目录下的文件 String path = context.getFilesDir().getPath(); // Log.e(TAG, "compressImage:path== "+path ); //获取缓存路径 File cacheDir = context.getCacheDir(); // Log.e(TAG, "compressImage:cacheDir== "+cacheDir ); // File newfile = new File( // getAlbumDir(), "small_" + f.getName()); File newfile = new File( cacheDir, "small_" + f.getName()); FileOutputStream fos = new FileOutputStream(newfile); bm.compress(Bitmap.CompressFormat.JPEG, 100, fos); return newfile.getPath(); } catch (Exception e) { Log.e(TAG, "error", e); } } else { Log.e(TAG, "save: 图片路径为空"); } return mCurrentPhotoPath; } /** * 根据路径获得突破并压缩返回bitmap用于显示 * * @param filePath * @return */ public static Bitmap getSmallBitmap(String filePath) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); options.inSampleSize = calculateInSampleSize(options, 480, 800); options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath, options); } /** * 计算图片的缩放值 * * @param options * @param reqWidth * @param reqHeight * @return */ public 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; }
根据图片路径压缩图片并返回压缩后图片的路径
最新推荐文章于 2024-08-11 18:05:09 发布