2016-11-10 3 views
-2

전방 카메라의 미리보기를 미러링하려고했습니다 ... 미리보기가 이미지를 세로로 대칭시켜야합니다. 앞 카메라와 같이 오른쪽에서 왼쪽으로 바꿔야합니다 ... 정상적인 미리보기가 필요하지 않습니다. 앞 카메라에서 본 것처럼 보이고 SurfaceTexture를 시도하는 것과 같은 이미지가 필요합니다. 그것에 대해 아는 사람이 있습니까? 어떤 종류의 도움도 감사드립니다!후면 카메라 미리보기를 미러링하는 방법은 무엇입니까?

+1

카메라를 주 카메라와 똑같이 보이도록 그림을 뒤집으려고하십니까? – drew

+0

예 미리보기를 오른쪽에서 왼쪽으로 또는 왼쪽에서 오른쪽으로 넘기려면 나와 동일합니다 ... 어떤 방법을 알고 있습니까? –

+0

camera2api를 사용하고 있습니까? 아니면 오래된 것입니까? – drew

답변

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에서 비트 맵을 만들 수 있습니다. 픽셀 배열을 비트 맵으로 변환하면됩니다. 응용 프로그램에서 두 카메라를 모두 사용하는 경우 앞의 예제에서 사용한 것처럼 앞의 카메라를 사용했는지 확인할 수 있습니다.

+0

또한 문제가 해결되면이를 표시하십시오. 이것은 다른 사람들이 같은 문제를 겪을 때 도움이 될 것입니다. – drew

+0

고맙습니다. 지금은 대답으로 표시했습니다. –

+0

제 경우의 미리보기를 비트 맵으로 변환하는 방법을 알고 있습니까? –

관련 문제