如何镜像后置摄像头预览?

时间:2016-11-10 19:04:32

标签: java android algorithm camera android-camera

我试图让后置摄像头的镜像预览...我的意思是预览应该垂直镜像;它应该像前置摄像头一样从右向左交换...... 我不需要正常的预览我需要的图像,如果它从前置摄像头看到,我正在尝试SurfaceTexture。 是否有人对此有所了解? 任何类型的帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

这就是我所做的。我将像素数组转换为位图并将其翻转。我注意到我还必须旋转我的图像。如果您需要这样做,可以使用下面的rotateBitmap方法执行此操作。我在翻转它之前旋转它。由于我的应用程序使用两个摄像头,我首先检查它是否使用前置摄像头。

public Bitmap flip(Bitmap d)
{
    Matrix m = new Matrix();
    m.preScale(-1, 1);
    Bitmap dst = Bitmap.createBitmap(d, 0, 0, d.getWidth(), d.getHeight(), m, false);
    dst.setDensity(DisplayMetrics.DENSITY_DEFAULT);
    return dst;
}

public Bitmap rotateBitmap(Bitmap source, float angle)
{
    //Rotates Bitmap
    Matrix matrix = new Matrix();
    matrix.postRotate(angle);
    return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
}

所以它看起来像这样。

if(orienation == Orienation.SELFIE)
{            
    bMap = rotateBitmap(bMap, 270);
    bMap = flip(bMap);
}

这些只是我在我的应用程序中使用的一些自定义字段。我认为你能得到这个想法,并且无论你需要什么都可以满足它。

private Camera.PictureCallback mPicture = new Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, data.length);
        if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            frontFacing = true;
        }
    }
};

您可以在PictureCallback中创建位图。只需将像素数组转换为位图。如果您在应用程序中使用两个摄像头,您可以检查是否使用了前面的相机,就像我在上面的示例中所做的那样。