How can I save image taken from camera into internal storage

I have this code that take photo and save to external storage, what I want is save to internal storage, please help me… what I should change to save to internal storage…

thank you

public class MainActivity extends AppCompatActivity {

    public static final int CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE = 1777;

    protected void onCreate(Bundle savedInstanceState) {

        Button button = (Button) findViewById(;

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {

                Intent intent = new Intent("");

                File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg");

                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                startActivityForResult(intent, CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE);


    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //Check that request code matches ours:

        //Get our saved file into a bitmap object:

            File file = new File(Environment.getExternalStorageDirectory() + File.separator + "image.jpg");
            Bitmap bitmap = decodeSampledBitmapFromFile(file.getAbsolutePath(), 1000, 700);

    public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth, int reqHeight) { 

        //First decode with inJustDecodeBounds=true to check dimensions

        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path, options);

        // Calculate inSampleSize, Raw height and width of image

        final int height = options.outHeight;
        final int width = options.outWidth;
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        int inSampleSize = 1;

        if (height > reqHeight) {
            inSampleSize = Math.round((float) height / (float) reqHeight);
        int expectedWidth = width / inSampleSize;

        if (expectedWidth > reqWidth) {
            //if(Math.round((float)width / (float)reqWidth) > inSampleSize) // If bigger SampSize..

            inSampleSize = Math.round((float) width / (float) reqWidth);

        options.inSampleSize = inSampleSize;

        // Decode bitmap with inSampleSize set

        options.inJustDecodeBounds = false;

        return BitmapFactory.decodeFile(path, options);


You can try this code to save your image to internal storage:

FileOutputStream fos; 
try { 
    fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    // You can also use .JPG
    yourBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);   
catch (FileNotFoundException e) { 
    Log.e(TAG, e.getMessage());
catch (IOException e) { 
   Log.e(TAG, e.getMessage());
} finally {

You can also have a look at this:


For saving your full size image file to internal storage, you’ll have to change your

File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg");


File file = new File(context.getFilesDir(), "image.jpg");

getFilesDir() returns internal directory of your app. You will find more detailed information here: