您的位置:首页 > 移动开发 > Android开发

android中图片压缩以及图片旋转的方法

2015-11-16 21:42 423 查看
博客源址android中图片压缩以及图片旋转的方法
博客时间:2014-12-08
14:40
android中图片压缩以及图片旋转的方法

在开发中,如果需要上传图片到服务器中,而且还需要在本地预览,就会用到图片的压缩:

[java] view
plaincopy

/** 

 * 计算图片的缩放值 

 *  

 * @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;  

}  

  

/** 

 * 根据路径获得图片并压缩返回bitmap 

 *  

 * @param filePath 

 * @return 

 */  

public static Bitmap getSmallBitmap(String filePath, int reqWidth,  

        int reqHeight) {  

    final BitmapFactory.Options options = new BitmapFactory.Options();  

    options.inJustDecodeBounds = true;  

    BitmapFactory.decodeFile(filePath, options);  

    options.inSampleSize = calculateInSampleSize(options, reqWidth,  

            reqHeight);  

    options.inJustDecodeBounds = false;  

    return BitmapFactory.decodeFile(filePath, options);  

}  

有时候显示图片的时候 会发现有些图片的位置不正,这时我们就需要调整一下方向:

[java] view
plaincopy

   /** 

 * 获取图片文件的信息,是否旋转了90度,如果是则反转 

 * @param bitmap 需要旋转的图片 

 * @param path   图片的路径 

 */  

public static Bitmap reviewPicRotate(Bitmap bitmap,String path){  

    int degree = getPicRotate(path);  

    if(degree!=0){  

        Matrix m = new Matrix();    

        int width = bitmap.getWidth();    

        int height = bitmap.getHeight();    

        m.setRotate(degree); // 旋转angle度    

        bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,m, true);// 从新生成图片    

    }  

    return bitmap;  

}  

  

/** 

 * 读取图片文件旋转的角度 

 * @param path 图片绝对路径 

 * @return 图片旋转的角度 

 */  

public static int getPicRotate(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;  

}  

android中图片压缩以及图片旋转的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: