android手机拍照问题,图像反转90度 手机图片摄像头拍照Android 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://asysbang.com/forum.php?mod=viewthread&tid=58&extra=page%3D1 我把解决方法贴出来,大家看看1、预览时正确显示 主要参考系统相机代码实现getDisplayOritation就可以了 //在preview之前调用setDisplayOrientation int degrees = getDisplayOritation(getDispalyRotation(), cameraId); mCamera.setDisplayOrientation(degrees); mCamera.startPreview(); getDisplayOritation函数如下: private int getDisplayOritation(int degrees, int cameraId) { Camera.CameraInfo info = new Camera.CameraInfo(); Camera.getCameraInfo(cameraId, info); int result; if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { result = (info.orientation + degrees) % 360; result = (360 - result) % 360; } else { result = (info.orientation - degrees + 360) % 360; } return result; } private int getDispalyRotation() { int i = getWindowManager().getDefaultDisplay().getRotation(); switch (i) { case Surface.ROTATION_0: return 0; case Surface.ROTATION_90: return 90; case Surface.ROTATION_180: return 180; case Surface.ROTATION_270: return 270; } return 0; }2、显示图片时正确显示 竖屏拍照的照片,直接使用的话,会旋转90度 参考系统图库的代码,需要先查询mediascanner的orientation字段,然后应用再把角度旋转过来,这样显示就ok了 参考代码如下: 假设c为查询mediaprovider数据库返回的cursor int rotation = c.getInt(c.getColumnIndex(MediaStore.Images.ImageColumns.ORIENTATION)); if (rotation != 0) { Bitmap bitmap = BitmapFactory.decodeFile(path); imageBefore.setImageBitmap(bitmap); Matrix m = new Matrix(); m.setRotate(rotation); Bitmap transformed = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true); return transformed; } " 假设c为查询mediaprovider数据库返回的cursor "这个c怎么得出来的? 很奇怪的现象,求解!! 关于android 手机的camera问题 Android客户端C/S/S应用如何做安全访问控制 预测APP获奖名单第二波开始啦!~~奖品更给力! layout_gravity也garvity的区别 通过命令行启动模拟器报如下Warning,这是怎么了? 有关widget没有在指定的时间内更新的问题 Android下的php是否可与 service交互? 自己总结的一些知识点 一个关于写U盘后没数据的问题 A手机开启了热点, B手机连上了这台手机开启的热点。问:为什么B手机用socket连接不上A手机 Android面试offer的选择,求帮忙
//在preview之前调用setDisplayOrientation
int degrees = getDisplayOritation(getDispalyRotation(), cameraId);
mCamera.setDisplayOrientation(degrees);
mCamera.startPreview();
getDisplayOritation函数如下:
private int getDisplayOritation(int degrees, int cameraId) {
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360;
} else {
result = (info.orientation - degrees + 360) % 360;
}
return result;
}
private int getDispalyRotation() {
int i = getWindowManager().getDefaultDisplay().getRotation();
switch (i) {
case Surface.ROTATION_0:
return 0;
case Surface.ROTATION_90:
return 90;
case Surface.ROTATION_180:
return 180;
case Surface.ROTATION_270:
return 270;
}
return 0;
}
2、显示图片时正确显示 竖屏拍照的照片,直接使用的话,会旋转90度 参考系统图库的代码,需要先查询mediascanner的orientation字段,然后应用再把角度旋转过来,这样显示就ok了 参考代码如下: 假设c为查询mediaprovider数据库返回的cursor int rotation = c.getInt(c.getColumnIndex(MediaStore.Images.ImageColumns.ORIENTATION));
if (rotation != 0) {
Bitmap bitmap = BitmapFactory.decodeFile(path);
imageBefore.setImageBitmap(bitmap);
Matrix m = new Matrix();
m.setRotate(rotation);
Bitmap transformed = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);
return transformed;
}
这个c怎么得出来的?