android中图片压缩以及图片旋转的方法
2014-12-08 14:40
288 查看
在开发中,如果需要上传图片到服务器中,而且还需要在本地预览,就会用到图片的压缩:
有时候显示图片的时候 会发现有些图片的位置不正,这时我们就需要调整一下方向:
/** * 计算图片的缩放值 * * @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); }
有时候显示图片的时候 会发现有些图片的位置不正,这时我们就需要调整一下方向:
/** * 获取图片文件的信息,是否旋转了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中图片压缩以及图片旋转的方法
- android中图片压缩以及图片旋转的方法
- Android压缩图片并保持不失真的高效方法以及为图片添加水印
- android调用系统相机的方法,并且解决三星手机遇到的问题,图片旋转、压缩
- android 图片压缩的方法
- Android 图片压缩也即生成缩略图方法
- android实现图片缩放 旋转的几种方法
- android 图片压缩的方法
- android获取项目下的一张图片的绝对路径问题以及解决方法
- android 计算Bitmap占byte大小,以及Bitmap中像素数的计算,另外再给出一个按尺寸裁剪图片的方法
- Android压缩图片到100K以下并保持不失真的高效方法
- android图片压缩方法
- 用android来实现图片的绘制以及旋转缩放案例分析
- Android压缩图片到100K以下并保持不失真的高效方法
- android获取项目下的一张图片的绝对路径问题以及解决方法
- Android压缩图片到100K以下并保持不失真的高效方法
- Android:指定分辨率和清晰度的图片压缩方法源码
- 关于图片资源在android2.1/2.2/2.3下无法显示的问题以及解决方法
- Android 图片压缩也即生成缩略图方法
- android 比较靠谱的图片压缩方法