Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – outofmemoryerror同时制作位图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作可以合成相机预览和png的相机应用程序.

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

我的消息来源如下

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,我怎么能解决这个问题..?

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)

解决方法

试试这个代码……
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 – outofmemoryerror同时制作位图全部内容,希望文章能够帮你解决android – outofmemoryerror同时制作位图所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。