마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

surfaceview 를 bitmap으로 그릴 때 해상도 문제

0 추천
카메라의 프리뷰를 배경이미지로 다른 이미지뷰와 비트맵으로 합성하는 코드를 만들었는데요.

프리뷰를 비트맵으로 그릴때 해상도문제인지 프리뷰와 배경이미지가 조금 다르게 그려집니다. (마치 줌인된것처럼)

서로 똑같이 하려면 어떻게 해야하나요?

혹시 해상도문제라면 해상도를 어떻게 구해주나요??

 

관련 코드입니다

int w = camera.getParameters().getPictureSize().width; int h = camera.getParameters().getPictureSize().height; int orientation = setCameraDisplayOrientation(MainActivity.this, CAMERA_FACING, camera); //byte array를 bitmap으로 변환 BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options); //이미지를 디바이스 방향으로 회전 Matrix mMatrix = new Matrix(); mMatrix.postRotate(orientation); bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mMatrix, false); //bitmap을 byte array로 변환 ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] currentData = stream.toByteArray();
hwana (140 포인트) 님이 2018년 6월 22일 질문
hwana님이 2018년 6월 22일 수정

1개의 답변

0 추천
Activity를 실행하고 나면, Layout의 해상도 가 있습니다.

즉 Layout의 width와 Height가 예를 들면, 1440 X 2960이라고 하죠.
그리고 ImageView의 위치가 X=100, Y=100, Width=200, Height=200 이라고 가정해 봅시다.

카메라 Preview의 해상도는 프로그래머블하게 선택할 수도 있고, 지정하지 않으면 기본값이 들어옵니다.

카메라 Preview에서 떨어지는 Bitmap이 1080 X 1920이라고 하면,
1440X2960에서의 ImageView의 위치를
Preview Bitmap에서의 위치로 재계산해서 합성해야 합니다.

그렇게 하지 않으면 폰에 따라서 어떤 것은 확대된 것처럼, 어떤 것은 작아진 것처럼 보일 겁니다.
Will Kim (43,170 포인트) 님이 2018년 6월 23일 답변
...