我试图让后置摄像头的镜像预览...我的意思是预览应该垂直镜像;它应该像前置摄像头一样从右向左交换...... 我不需要正常的预览我需要的图像,如果它从前置摄像头看到,我正在尝试SurfaceTexture。 是否有人对此有所了解? 任何类型的帮助表示赞赏!
答案 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中创建位图。只需将像素数组转换为位图。如果您在应用程序中使用两个摄像头,您可以检查是否使用了前面的相机,就像我在上面的示例中所做的那样。