android - outofmemoryerror while making bitmap -
i making camer application can composite camera preview , png.
i save images in onpicturetaken callback
my source below
public void onpicturetaken(byte[] data, camera camera) { //preview 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 shows outofmemoryerror,how can solve 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): @ android.graphics.bitmap.nativecreate(native method) 05-20 15:13:49.114: e/androidruntime(31647): @ android.graphics.bitmap.createbitmap(bitmap.java:605) 05-20 15:13:49.114: e/androidruntime(31647): @ android.graphics.bitmap.createbitmap(bitmap.java:585) 05-20 15:13:49.114: e/androidruntime(31647): @ com.example.firstcameraappli.mainactivity$2.onpicturetaken(mainactivity.java:103) 05-20 15:13:49.114: e/androidruntime(31647): @ android.hardware.camera$eventhandler.handlemessage(camera.java:750) 05-20 15:13:49.114: e/androidruntime(31647): @ android.os.handler.dispatchmessage(handler.java:99) 05-20 15:13:49.114: e/androidruntime(31647): @ android.os.looper.loop(looper.java:137) 05-20 15:13:49.114: e/androidruntime(31647): @ android.app.activitythread.main(activitythread.java:4514) 05-20 15:13:49.114: e/androidruntime(31647): @ java.lang.reflect.method.invokenative(native method) 05-20 15:13:49.114: e/androidruntime(31647): @ java.lang.reflect.method.invoke(method.java:511) 05-20 15:13:49.114: e/androidruntime(31647): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:980)
try code....
picturecallback mypicturecallback_jpg = new picturecallback() { @override public void onpicturetaken(byte[] data, camera arg1) { bitmapfactory.options opt; opt = new bitmapfactory.options(); opt.intempstorage = new byte[16 * 1024]; parameters parameters = arg1.getparameters(); size size = parameters.getpicturesize(); int height11 = size.height; int width11 = size.width; float mb = (width11 * height11) / 1024000; if (mb > 4f) opt.insamplesize = 4; else if (mb > 3f) opt.insamplesize = 2; //preview camera bitmap bitmap = bitmapfactory.decodebytearray(data, 0, data.length,opt); } } get image in bitmap use per requirements.
Comments
Post a Comment