android – outofmemoryerror同时制作位图

前端之家收集整理的这篇文章主要介绍了android – outofmemoryerror同时制作位图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作可以合成相机预览和png的相机应用程序.

我想将图像保存在onPictureTaken回调中

我的消息来源如下

@H_404_6@public void onPictureTaken(byte[] data,Camera camera) { //preview from camera Bitmap bitmap = BitmapFactory.decodeByteArray(data,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,bitmap.getWidth(),bitmap.getHeight()),null); canvas.drawBitmap(overlayBmp,null);

然而,它显示了outofmemoryerrorrror,我怎么能解决这个问题..?

@H_404_6@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)

解决方法

试试这个代码…… @H_404_6@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 from camera Bitmap bitmap = BitmapFactory.decodeByteArray(data,data.length,opt); } }

在位图中获取图像,然后根据您的要求使用.

猜你在找的Android相关文章