解决图片旋转问题
来源:互联网 发布:短租用什么软件 编辑:程序博客网 时间:2024/04/29 07:27
从相册中选择图片发现图片旋转了 有的选择90° 有的旋转270° 旋转度数不定。
之前在相机拍照是也有遇到过拍摄的图片与预览的相比旋转了90°,
不过相机那个旋转度数的固定的,当时只是将每张拍摄所得的图片都旋转90° 解决了问题,
然而这个问题旋转度数不定,该如何解决呢?
其实也很简单
1:判断旋转度数
//获取图片的旋转度数public static int getExifOrientation(String filepath) { int degree = 0; ExifInterface exif = null; try { exif = new ExifInterface(filepath); } catch (IOException ex) { Log.e(TAG, "cannot read exif", ex); } if (exif != null) { int orientation = exif.getAttributeInt( ExifInterface.TAG_ORIENTATION, -1); if (orientation != -1) { 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; } } } return degree;}
2:旋转回正常图片。
public static Bitmap rotate(Bitmap b, int degrees) { Bitmap b2 = null; if (degrees != 0 && b != null) { Matrix m = new Matrix(); m.postRotate(degrees); try { b2 = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true); } catch (Exception ex) { b2 = b; Log.i(TAG,"图片选择错误"+ex.getMessage()); } } return b2; }3:因为图片的处理比较耗时 所以在工作线程中执行 防止造成卡顿现象
public void handleImage(String outpath,String temppath,String localpath,CallBack callback){ Thread thread = new Thread(new Runnable() { @Override public void run() { try{ int orientation = BitmapUtil.readPictureDegree(localpath); Log.i(TAG,"图片选择角度:" + orientation); if(orientation!=0){ BitmapUtil.compressAndGenImage(localpath, temppath,400,false);//压缩 Bitmap bitmap = BitmapUtil.rotate(BitmapUtil.getBitmap(temppath),orientation);//旋转 BitmapUtil.storeImage(bitmap,outpath);//存储 }else{ BitmapUtil.compressAndGenImage(localpath, outpath,400,false);//压缩 } callback.call(outpath);//将得到的路径回调 }catch (Exception e){ Log.i(TAG,e.getMessage()); } } }); thread.start();}
4:注意我这里是先进行质量压缩 在进行旋转操作 但是在判断旋转角度的时候 一定要使用相册中选择的地址(localpath),如果使用 我们压缩后的存储地址(outpath)我们得到的旋转角度将会一直的0.
0 1
- 解决图片旋转问题
- 解决图片旋转的问题
- 解决相册图片旋转的问题
- 解决图片朝向旋转的问题
- Android解决三星手机图片旋转问题
- 解决ios上传的图片旋转问题
- iOS开发 UIimage旋转,得到旋转后的Image图片,解决imageView旋转,内部图片不跟着旋转问题
- 三星手机拍照,图片旋转问题的解决
- iOS解决拍照图片 会旋转 打开变形的问题
- 解决ionic在手机上拍照图片旋转的问题
- vue 上传图片解决ios竖拍旋转问题
- Android 图片旋转问题
- 拍照图片旋转问题
- iOS图片旋转问题
- UITabBarControler解决旋转问题
- 图片旋转问题(指针旋转问题)
- 解决UIImage图片上传旋转
- 解决图片上传到服务器旋转90度的问题(图片倒置)
- 汇编中栈的定义
- ES6常用的一些语法总结
- arcgis api for js入门开发系列八聚合效果(含源代码)
- 144
- 子查询与相关子查询
- 解决图片旋转问题
- arcgis api for js入门开发系列九 自写算法实现地图量算工具(含源代码)
- Sqlite数据库中索引的使用、索引的优缺点
- Java单例的7种写法
- STM32F系列ARM Cortex-M3核微控制器基础之系统时钟二
- arcgis api for js入门开发系列十 自定义Navigation控件样式风格(含源代码)
- cookie和session
- CentOS 7.1 下yum安装telnet服务
- redis 作为缓存总结