/*** 读取图片属性:旋转的角度* @param path 图片绝对路径* @return degree旋转的角度*/public 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;}/** 旋转图片 * @param angle * @param bitmap * @return Bitmap */ public Bitmap rotaingImageView(int angle , Bitmap bitmap) {  //旋转图片 动作   Matrix matrix = new Matrix();matrix.postRotate(angle);// 创建新的图片   return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);  }/**** 将bitmap保存在SD jpeg格式* * @param bitmap*            图片bitmap* @param filePath*            要保存图片路径* @param quality*            压缩质量值*/public void saveImage(Bitmap bitmap, String filePath, int quality) {FileOutputStream fileOutputStream = null;try {fileOutputStream = new FileOutputStream(filePath);bitmap.compress(CompressFormat.JPEG, quality, fileOutputStream);fileOutputStream.flush();fileOutputStream.close();// 如果图片还没有回收,强制回收if (!bitmap.isRecycled()) {bitmap.recycle();System.gc();}} catch (Exception e) {}}bitmap=ImageCompress.decodeSampledBitmapFromResource(filename, 480, 800);//图片旋转int Degree = imageUtils.readPictureDegree(filename);bitmap = imageUtils.rotaingImageView(Degree, bitmap);//保存图片到SD卡//imageCompress.saveImage(bitmap, filename);imageCompress.saveImage(bitmap, filename,90);

View Code

/**** 动态设置inSampleSize 倍数* * @param pathName*            图片路径* @param reqWidth*            要压缩的宽度* @param reqHeight*            要压缩的高度* @return*/public static Bitmap decodeSampledBitmapFromResource(String pathName,int reqWidth, int reqHeight) {// 首先设置 inJustDecodeBounds=true 来获取图片尺寸final BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(pathName, options);// 计算 inSampleSize 的值options.inSampleSize = calculateInSampleSize(options, reqWidth,reqHeight);// 根据计算出的 inSampleSize 来解码图片生成Bitmapoptions.inJustDecodeBounds = false;return BitmapFactory.decodeFile(pathName, options);}

View Code

转载于:https://www.cnblogs.com/freexiaoyu/p/4505184.html

android 照片旋转并保存相关推荐

  1. Android 屏幕旋转时保存状态

    android中每次屏幕的旋转都会重启Activity,所以应该给每个activity加上 android:configChanges="keyboardHidden|orientation ...

  2. android exifinterface 图片大小,Android图像resize和保存EXIF数据(方向,旋转等)

    Android图像resize和保存EXIF数据(方向,旋转等) 如果您的Android应用程序使用设备相机拍摄照片然后resize(这对减小上传大小非常常见),但是您可能没有意识到此大小调整操作会剥 ...

  3. android 三星调用拍照功能吗,Android 开发手机(三星)拍照应用照片旋转问题解决办法...

    Android 开发手机(三星)拍照应用照片旋转问题解决办法 最近解决了一个令我头疼好久的问题,就是三星手机拍照图片旋转的问题,项目中有上传图片的功能,那么涉及到拍照,从相册中选择图片,别的手机都ok ...

  4. Android 三星手机拍照,从图库选择照片旋转问题完美解决

    好久没有写博客了,最近解决了一个令我头疼好久的问题,就是三星手机拍照图片旋转的问题,项目中有上传图片的功能,那么涉及到拍照,从相册中选择图片,别的手机都ok没有问题,唯独三星的手机拍照之后,你会很清楚 ...

  5. android:解决小米手机相机返回照片旋转问题

    背景 公司有一功能需要调用相机或者相册,拍摄或者选择照片先做展示然后上传到服务器.但是提交测试的时候,测试小姐姐给我提了一个bug,描述为拍照返回的照片向左旋转90度展示.由于道长的测试机为华为的,当 ...

  6. android 旋转视频_如何在Android上旋转视频

    android 旋转视频 There's a war going on out there. You won't see it on the news, you won't read about it ...

  7. android 屏幕旋转不重新加载,Android webview旋转屏幕导致页面重新加载问题解决办法...

    Android webview旋转屏幕导致页面重新加载问题解决办法 1. 在create时候加个状态判断 protected void onCreate(Bundle savedInstanceSta ...

  8. 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)...

    背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...

  9. createbitmap 旋转90度_解决某些机型调用系统相机照片旋转的问题

    如题,相信很多开发者在调用系统照相机接收拍好的照片时,发现照片被无故旋转了90度.这一问题反映在大部分的三星手机上,当然其他的机器还没试完全,总之是有问题. 于是乎想到如下的解决办法: 识别机型,获取 ...

最新文章

  1. 【GoLang】深入理解slice len cap什么算法? 参数传递有啥蹊跷?
  2. java代码走查常见错误_FindBugs常见错误描述和解决方法
  3. 解决Android中无法搜索联系人的问题
  4. Java多线程(二):Callable和FutureTask结合使用获取返回值
  5. merge into ORA-30926
  6. java获取主机mac_Java 如何获取主机的MAC地址
  7. 编译mod_jk.so
  8. windows 2003系列之搭建域环境
  9. java 出栈_Java开发中巧妙使用链表来实现模拟栈的入栈出栈操作
  10. 太理java题库_JAVA题库(复习必备)
  11. js正则表达式 验证非负数
  12. 脉冲云中使用的ajv
  13. 【Linux系列文章】安装与配置(vmware)
  14. 中国十大无线耳机排行榜,音质好配置高的蓝牙耳机分享
  15. 硬件辅助虚拟化 之EPT(内存虚拟化)介绍
  16. 压缩机的 压缩比、内容积比、内压力比概念你不要搞混淆了
  17. SwiftUI 小专栏20200817汇总
  18. 开源的微信商城,含小程序端,后台管理系统,服务器后端,附完整源码
  19. java策略模式和工厂模式的区别
  20. python科学计算库numpy和绘图库PIL的结合,素描图片(原创)

热门文章

  1. spingMVC拦截器 -单个、多个、设想
  2. 【零基础学Java】—对象的内存图(八)
  3. 【百度地图】——利用三级联动加载百度地图
  4. redis 远程主机强迫关闭了一个现有的连接_如何在 Debian 10 上安装和配置 Redis 服务...
  5. 古代的碎银子是怎么来的?
  6. 大多数项目能不能投资,能不能去创业,取决于自己是站在什么高度看问题
  7. 职场上,领导更愿意提拔什么样的下属?
  8. 互联网的逻辑和电商的逻辑是不一样的
  9. 为什么家里电信宽带不能用路由器了?
  10. Qt4_派生对话框类