Android studio 保存图层可绘制时遇到错误

Android studio 保存图层可绘制时遇到错误,android-studio,bitmap,android-bitmap,bitmapimage,layerdrawable,Android Studio,Bitmap,Android Bitmap,Bitmapimage,Layerdrawable,我是初学者,我正在尝试创建一个像retrica或其他类似的应用程序。但我面临一些问题,比如从imageview保存图像。我使用layerdrawable实现帧、剪贴画和过滤器等。我遇到了错误 08-12 22:01:55.812 9469-9469/com.zaibatsu.usman.camerashop D/My Error::java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.graphics.drawable.Layer

我是初学者,我正在尝试创建一个像retrica或其他类似的应用程序。但我面临一些问题,比如从imageview保存图像。我使用layerdrawable实现帧、剪贴画和过滤器等。我遇到了错误

08-12 22:01:55.812 9469-9469/com.zaibatsu.usman.camerashop D/My Error::java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.graphics.drawable.LayerDrawable.setBounds(int,int,int,int,int)”

实际上,我正在将LayerWable转换为位图图像,因此,我想将编辑后的图像保存到设备内存中。 这是我的密码

公共类显示扩展了活动{

static final int REQUEST_IMAGE_CAPTURE = 1;
ImageView CapturedImageView;
LayerDrawable layerDrawable;
Uri uri; String ImagePath;
Bitmap bitMapImage;
OutputStream outputStream;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display);

    Button CaptureButton= (Button)findViewById(R.id.btnCapture);
    CapturedImageView = (ImageView)findViewById(R.id.CapturedImageView);

    if (!hasCamera())
    {
        CaptureButton.setEnabled(false);
    }
}

private boolean hasCamera()
{
    return getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY);
}
public void onButtonClick(View view)
{
    if (view.getId()== R.id.btnCapture)
    {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
    }
    if (view.getId()==R.id.Frame1)
    {
        Drawable[] layers = new Drawable[2];
        layers[0] = CapturedImageView.getDrawable();
        layers[1] = getResources().getDrawable(R.drawable.f1);
        LayerDrawable layerDrawable = new LayerDrawable(layers);
        CapturedImageView.setImageDrawable(layerDrawable);
    }
    if (view.getId()==R.id.btnSave){

        try {

            BitmapDrawable bDrawable  = (BitmapDrawable) getSingleDrawable(layerDrawable);
            Toast.makeText(getApplicationContext(),"No E", Toast.LENGTH_LONG).show();
            bitMapImage = bDrawable.getBitmap();
            MediaStore.Images.Media.insertImage(getContentResolver(),bitMapImage,"title","Description");
        }
        catch (Exception e){
            Toast.makeText(Display.this, "My Error : "+e, Toast.LENGTH_LONG).show();
            Log.d("My Error : ", ""+e);
        }
    }
}
public Drawable getSingleDrawable(LayerDrawable layerDrawabl){
    int resourceBitmapHeight = 136, resourceBitmapWidth = 153;
    float widthInInches = 0.9f;
    int widthInPixels = (int)(widthInInches * getResources().getDisplayMetrics().densityDpi);
    int heightInPixels = (widthInPixels * resourceBitmapHeight / resourceBitmapWidth);
    int insetLeft = 10, insetTop = 10, insetRight = 10, insetBottom = 10;
    layerDrawable.setLayerInset(1, insetLeft, insetTop, insetRight, insetBottom);
    Bitmap bitmap = Bitmap.createBitmap(widthInPixels, heightInPixels, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    layerDrawabl.setBounds(0, 0, widthInPixels, heightInPixels);
    layerDrawabl.draw(canvas);
    BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
    bitmapDrawable.setBounds(0, 0, widthInPixels, heightInPixels);
    return bitmapDrawable;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode==REQUEST_IMAGE_CAPTURE && resultCode==RESULT_OK);
    {
        Bundle extras = data.getExtras();
        Bitmap CapturePhoto = (Bitmap) extras.get("data");
        CapturedImageView.setImageBitmap(CapturePhoto);
    }
}
}