所以我得到了这个简单的应用程序,打开相机(正面或背面),拍照,发布。
尽管有显示方向,我还是设法做了直接预览。
问题是当我得到照片时。例如,如果我在纵向模式下使用不同设备拍摄照片,则会根据所使用的设备旋转不同角度的结果图像。
我所要求的只是简单:你知道如何拍摄直接照片(纵向或横向,根据旋转)并确保它适用于每个设备吗?
好吧'如果有人有解决方案,请分享,我会永远感激!
答案 0 :(得分:0)
默认情况下,不同的设备在其图片上使用不同的方向。这可能很烦人。你需要做的是找到方向,并相应地翻转图像。
这是我在我的应用程序中使用的一些代码: 注意:我确定这不是完美的。如果有人对如何改进这一点有任何建议,请随时评论/编辑!
private int getOrientation(String pathToYourImage) throws IOException{
ExifInterface exif = new ExifInterface(path);
int rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
if (rotation == ExifInterface.ORIENTATION_ROTATE_90){
return 90;
} else if (rotation == ExifInterface.ORIENTATION_ROTATE_180){
return 180;
} else if (rotation == ExifInterface.ORIENTATION_ROTATE_270){
return 270;
}
return 0;
}
然后像
if (orientation > 0){
originalImage = rotateBitmap(originalImage, orientation);
}
private Bitmap rotateBitmap(Bitmap srcBitmap, int angle){
Matrix matrix = new Matrix();
matrix.postRotate(angle);
Bitmap rotatedBitmap = Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.getWidth(), srcBitmap.getHeight(), matrix, true);
srcBitmap.recycle();
return rotatedBitmap;
}
这可能不完全符合您的需求,但对我来说效果还不错。问你是否还有其他问题!