다음은 SurfaceView에서 그려지는 Canvas를 Bitmap으로 가져오는 방법이다.
비트맵을 가져와서는 이미지뷰에 보여주던, 파일로 저장하던, 서버에 업로드하던 그건 뒤에 알아서 처리하시길..
1.
SurView sView =
new
SurView(
this
);
저는 그려지는 서페이스뷰를 sView로 선언하였습니다.
sView 에는 onDraw라는 그리는 함수가 있겠죠.
어떤 버튼 하나를 구현해서 그 버튼을 눌렀을때의 클릭이벤트를 다음과같이 처리합니다.
1.
Bitmap bitmap = Bitmap.createBitmap(DEVICE_WIDTH, DEVICE_HEIGHT, Bitmap.Config.ARGB_8888);
2.
3.
Canvas canvas =
new
Canvas(bitmap);
4.
sView.doDraw(canvas);
설명을 드리면 Bitmap을 하나 만들어서 거기에 Canvas 를 연결합니다.
그리고 서페이스뷰에다가 캔버스를 보내서 한번 그려주면 됩니다.
그러면 연결된 Bitmap에 그대로 그려져 나오는거죠
이제 Bitmap으로 선언된 bitmap을 입맛에 맞게 사용하면 끝!^^
혹시 surfaceview를 캡쳐하는 방법을 알수있을까요??
답글삭제buttonCenter.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Bitmap bitmap = Bitmap.createBitmap(1200,1200, Bitmap.Config.ARGB_8888); //bitmap 만들기
// Canvas canvas = new Canvas(bitmap); //비트맵에 그리기위해 canvas 생성
// canvas에 그리는 작업은 bitmap에 반영
// canvas.drawBitmap(bitmap, 0, 0, null); //canvas에 bitmap 이미지 그림
container.buildDrawingCache(); // container의 cache를 그린다
Bitmap captureView = container.getDrawingCache(); //위에서그린 cache를 가져온다
//canvas.drawBitmap(captureView,0,0,null); //
FileOutputStream fos;
try {
fos = new FileOutputStream(Environment.getExternalStorageDirectory().toString() + "/capture.jpeg");
captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (
FileNotFoundException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Captured!", Toast.LENGTH_LONG).show();
}
이렇게하면 검은화면 밖에 나오질 않네요. 비트맵을 만들고 비트 맵에서 canvas해서 저장하게 하고싶습니다.