Android摄像头:在所有设备上获得直观图片

时间:2014-09-05 16:11:37

标签: android camera

所以我得到了这个简单的应用程序,打开相机(正面或背面),拍照,发布。

尽管有显示方向,我还是设法做了直接预览。

问题是当我得到照片时。例如,如果我在纵向模式下使用不同设备拍摄照片,则会根据所使用的设备旋转不同角度的结果图像。

我所要求的只是简单:你知道如何拍摄直接照片(纵向或横向,根据旋转)并确保它适用于每个设备吗?

好吧'如果有人有解决方案,请分享,我会永远感激!

1 个答案:

答案 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;
}

这可能不完全符合您的需求,但对我来说效果还不错。问你是否还有其他问题!