android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
16lz
2021-12-04
转自: http://www.cnblogs.com/andgoo/archive/2012/08/29/2661896.html
第一步: AndroidManifest.xml 在Activity添加以下一个属性
android:configChanges= "orientation|keyboardHidden|screenSize" android:screenOrientation= "sensor" ,为的是能够横竖屏切换不用再次调用onCreate方法,直接调用onConfigurationChanged方法。screenSize是兼容 4.0 系统的才可以生效,否则方法没效。 |
|
第二步,解决竖屏拍照后保存图片会旋转90度的问题。这里我会在onConfigurationChanged方法进行判断当前是横拍还是竖拍,然后在调用相机拍照后,在保存图片的方法里,进行竖拍的照片90度旋转。
PictureCallback jpeg = new PictureCallback() { @Override public void onPictureTaken( byte [] data, Camera camera) { // TODO Auto-generated method stub Bitmap bMap; try { // 获得图片 bMap = BitmapFactory.decodeByteArray(data, 0 , data.length); Bitmap bMapRotate; if (takeType != 0 ) { //坚拍 Matrix matrix = new Matrix(); matrix.reset(); matrix.postRotate( 90 ); bMapRotate = Bitmap.createBitmap(bMap, 0 , 0 , bMap.getWidth(), bMap.getHeight(), matrix, true ); bMap = bMapRotate; } // Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length); File file = new File(filePath); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(file)); bMap.compress(Bitmap.CompressFormat.JPEG, 100 , bos); //将图片压缩到流中 bos.flush(); //输出 bos.close(); //关闭 } catch (Exception e) { e.printStackTrace(); } } }; |
关键代码是以上。
当用竖拍转横拍,还是横拍转竖拍,都要先在surfaceChanged方法,停止预览相机,重新设置下摄像头就不会再出现90度旋转。
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
- Android异步加载图像小结 (含线程池,缓存方法)
- Android(安卓)UI系列 - 布局 - 目录
- Android(安卓)TabHost使用、动态加载内容
- Android(安卓)UI开发第十七篇——Android(安卓)Fragment实例(Lis
- [Android]在App中使用相机