public void takePicture(final String title, final String description, final String gelPath)
{
mCamera.takePicture(null, null,new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmp = BitmapFactory.decodeFile(gelPath, options);
picture = BitmapFactory.decodeByteArray(data, 0, data.length);
MediaStore.Images.Media.insertImage(mContext.getContentResolver(),
overlayMark(picture,bitmp,250,250), title, description);
Toast.makeText(mContext, "이미지가 저장 되었습니다.", Toast.LENGTH_SHORT).show();
mCamera.startPreview();
}
});
}
private Bitmap overlayMark(Bitmap baseBmp, Bitmap overlayBmp, int distanceLeft,int distanceTop)
{
Bitmap bitmap1 = Bitmap.createBitmap(baseBmp.getWidth() + distanceLeft, baseBmp.getHeight() + distanceTop, baseBmp.getConfig());
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap resultBmp = Bitmap.createScaledBitmap(bitmap1, 100, 100, true);
Canvas canvas = new Canvas(resultBmp);
canvas.drawBitmap(baseBmp, distanceLeft, distanceTop, null);
canvas.drawBitmap(overlayBmp, 0, 0, null);
return resultBmp;
}
이부분에서 오류가나구요;;;
gelPath 는 다른파일에서
mCaptureButton = (Button)findViewById(R.id.capture_button);
mCaptureButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String gelPath = "/mnt/sdcard/picture/temp1.jpg";
mPreview.takePicture("MyPhoto", "Photo taken by sample application",gelPath);
}
});
파라미터로 받고잇습니다..
도와주세요 ㅠ
로그를 보면 답이 나오자나요. 로그 읽는 법을 더 터득하셔야 겠네요.
- 사용하려는 객체가 null이어서 exception이 발생
- canvas에서 draw 하려는 것이 recycle 되었는지 체크하는 도중에 NullPoint 발생
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.graphics.Canvas.drawBitmap(Canvas.java:1052)
- canvas의 drawBimap 메소드에서 발생.
- 실제 사용자 코드에서는 Preview 클래스의 100번째 줄이군요.
Preview 클래스의 overlayMark 라는 메소드 내부 입니다. 어떤게 null인지 체크를 해 보세요.
그리고 그게 왜 null인지 거꾸로 올라가면서 확인해 보세요.
아마도 비트맵이 null인거 같습니다.