Android 压缩图片+处理照片旋转角度的工具类

源于网络

/*

压缩图片,处理某些手机拍照角度旋转的问题

*/

public static String compressImage(Context context,String filePath,String fileName,int q) throws FileNotFoundException {


        Bitmap bm = getSmallBitmap(filePath);


        int degree = readPictureDegree(filePath);


        if(degree!=0){//旋转照片角度

            bm=rotateBitmap(bm,degree);

        }


        File imageDir = SDCardUtils.getImageDir(context);


        File outputFile=new File(imageDir,fileName);


        FileOutputStream out = new FileOutputStream(outputFile);


        bm.compress(Bitmap.CompressFormat.JPEG, q, out);


        return outputFile.getPath();

    }

//判断角度

public static int readPictureDegree(String path) {

        int degree = 0;

        try {

            ExifInterface exifInterface = new ExifInterface(path);

            int orientation = exifInterface.getAttributeInt(

                    ExifInterface.TAG_ORIENTATION,

                    ExifInterface.ORIENTATION_NORMAL);

            switch (orientation) {

            case ExifInterface.ORIENTATION_ROTATE_90:

                degree = 90;

                break;

            case ExifInterface.ORIENTATION_ROTATE_180:

                degree = 180;

                break;

            case ExifInterface.ORIENTATION_ROTATE_270:

                degree = 270;

                break;

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

        return degree;

    }

//旋转照片

public static Bitmap rotateBitmap(Bitmap bitmap,int degress) {

        if (bitmap != null) {

            Matrix m = new Matrix();

            m.postRotate(degress); 

            bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),

                    bitmap.getHeight(), m, true);

            return bitmap;

        }

        return bitmap;

    }


评论