카메라에 실시간으로 이미지를 받아서 처리하는 것을 하고싶습니다.
아주 간단한 서페이스뷰에 카메라 프리뷰를 직접 보여주는 건 소스가 많아서 쉽게 따라 했는데,
그 화면을 실시간으로 수정하고 싶어서 이미지를 받아오고 수정하고 다시 뿌려주고 싶습니다.
기존에 있던 뷰를 수정해서
public class CamView extends SurfaceView implements SurfaceHolder.Callback {.....
내부의 크리에이트 내에서의 코드를 수정한 것이 아래입니다.
아래에서 주석 친 mImageView.setImageBitmap(_Bitmap); 를 어떻게 띄어야 할지 잘 모르겠습니다.
public void surfaceCreated(SurfaceHolder arg0) {
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.setPreviewCallback(new Camera.PreviewCallback(){
public void onPreviewFrame(byte[] _data, Camera _camera){
int width = _camera.getParameters().getPictureSize().width;
int height = _camera.getParameters().getPictureSize().height;
int []abc = new int[width * height];
ImageProg imageprog = new ImageProg(); //이미지 작업 클래스
abc = ImageProg.decodeYUV420SP(_data, width, height);
byte[] data = imageprog.prog(abc, width, height); //실제 작업 메서드
Bitmap _Bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//mImageView.setImageBitmap(_Bitmap);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
원래 카메라만 띄었떤 기존 코드는
... 생략 ...
mCamera.setPreviewDisplay(mHolder);
Camera.Parameters parameters = mCamera.getParameters();
mCamera.setParameters(parameters);
mCamera.startPreview();
... 생략 ...
이렇게 있었는데, 여기선 setPreviewDisplay(mHolder) 를 통해 보내주는 곳을 잡는 걸로 알고 있는데,
수정한 코드의 setImageBitmap 된 뷰는 어떻게 나타내나요?
사실 위 수정된 코드도 제대로 짠 건지도 잘 모르겟네요..
독학으로 공부하는 지라 띄엄띄엄 개념을 놓치고 간게 있어 많이 부족합니다..
도움주시면 감사하겠습니다ㅠ