Android压缩并替换原文件

  
   /**
     * 压缩文件方法
     *
     * @param filePath 原路径
     * @return 返回新的文件对象(存储在原路径)
     */
    public File compress(String filePath) {
        //判断是否大于2MB,小于直接返回
        File sourceFile = new File(filePath);
        if (sourceFile.length() < 1024 * 1024 * 2) {
            return sourceFile;
        }
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;//只加载图像框架
        BitmapFactory.decodeFile(filePath, options);
        // 计算该图像压缩比例,可以调整这个值
        options.inSampleSize = 6;
        //设置加载全部图像内容
        options.inJustDecodeBounds = false;
        Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
        return saveBitmap(filePath, bitmap);
    }

    /**
     * 存储文件
     *
     * @param path    原路径
     * @param mBitmap 数据源
     * @return
     */
    public File saveBitmap(String path, Bitmap mBitmap) {
        File filePic = null;
        FileOutputStream fos = null;
        try {
            filePic = new File(path);
            if (!filePic.exists()) {
                filePic.getParentFile().mkdirs();
                filePic.createNewFile();
            } else {
                filePic.delete();
            }
            fos = new FileOutputStream(filePic);
            mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            return filePic;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally {
            if (null != fos) {
                try {
                    fos.flush();
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    原文作者:wasdzy111
    原文地址: https://www.jianshu.com/p/9702a322603d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞