图片压缩不失真的问题

最近项目遇到一个问题,就是图片压缩发送后,失真度太大,对方看不清图片。

当然,凡是压缩就会产生一定的失真度,只是度的大小问题而已,下面介绍一种,图片变小而尽量减少失真度的较好的方法(网上找的。实践之后觉得还行)。

/**
 * 根据路径获得图片并压缩返回bitmap用于显示
 * 
 * @param imagesrc
 * @return
 */
public static Bitmap getSmallBitmap(String filePath) {
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filePath, options);

    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize2(options, 480, 800);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;

    return BitmapFactory.decodeFile(filePath, options);
}

    public static String save(String mCurrentPhotoPath) {

        String path = null ;
        File f = new File(mCurrentPhotoPath);
        try {

            Bitmap bm = getSmallBitmap(mCurrentPhotoPath);

            // 获取保存图片的目录
            File dir = new File(
                    Environment
                            .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                    "jiankewang");
            // 获取保存 隐患检查的图片文件夹名称
            if (!dir.exists()) {
                dir.mkdirs();
            }
            
            FileOutputStream fos = new FileOutputStream(new File(
                    dir, "small_" + f.getName()));

            path = dir + "/small_" + f.getName();
            bm.compress(Bitmap.CompressFormat.JPEG, 90, fos);

        } catch (Exception e) {
            
        }

    return  path ;
}

 

你可能感兴趣的:(图片压缩不失真的问题)