2

I am beginner and i'm trying to create an app like retrica or other apps like it. But i'm facing some problems like saving an image from imageview.i'm using layerdrawable to implement frames,clip_arts and filters etc. i'm getting error

08-12 22:01:55.812 9469-9469/com.zaibatsu.usman.camerashop D/My Error :: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.LayerDrawable.setBounds(int, int, int, int)' on a null object reference

Actually i'm converting layerdrwable into bitmap image so, i want to save the edited image into device memory. Here is my code...

public class Display extends Activity {

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);
    }
}

}

0 Answers0