I am making a camer application which may contain a preview of the camera and png.
I would like to save the images in the onPictureTaken callback
my source is below
public void onPictureTaken(byte[] data, Camera camera) { //preview from camera Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); // overlay image Bitmap overlayBmp = overlay.getDrawingCache(); //blank beatmap Bitmap blankBitmap = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_8888); //make canvas Canvas canvas = new Canvas(blankBitmap); //composite image canvas.drawBitmap(bitmap, null,new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), null); canvas.drawBitmap(overlayBmp, null,new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), null);
However, this shows outofmemoryerror, how can I solve this problem ..?
05-20 15:13:49.114: E/AndroidRuntime(31647): FATAL EXCEPTION: main 05-20 15:13:49.114: E/AndroidRuntime(31647): java.lang.OutOfMemoryError 05-20 15:13:49.114: E/AndroidRuntime(31647): at android.graphics.Bitmap.nativeCreate(Native Method) 05-20 15:13:49.114: E/AndroidRuntime(31647): at android.graphics.Bitmap.createBitmap(Bitmap.java:605) 05-20 15:13:49.114: E/AndroidRuntime(31647): at android.graphics.Bitmap.createBitmap(Bitmap.java:585) 05-20 15:13:49.114: E/AndroidRuntime(31647): at com.example.firstcameraappli.MainActivity$2.onPictureTaken(MainActivity.java:103) 05-20 15:13:49.114: E/AndroidRuntime(31647): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:750) 05-20 15:13:49.114: E/AndroidRuntime(31647): at android.os.Handler.dispatchMessage(Handler.java:99) 05-20 15:13:49.114: E/AndroidRuntime(31647): at android.os.Looper.loop(Looper.java:137) 05-20 15:13:49.114: E/AndroidRuntime(31647): at android.app.ActivityThread.main(ActivityThread.java:4514) 05-20 15:13:49.114: E/AndroidRuntime(31647): at java.lang.reflect.Method.invokeNative(Native Method) 05-20 15:13:49.114: E/AndroidRuntime(31647): at java.lang.reflect.Method.invoke(Method.java:511) 05-20 15:13:49.114: E/AndroidRuntime(31647): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
whitebear
source share