Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to save a bitmap on internal storage

this is my code I and I want to save this bitmap on my internal storage. The public boolean saveImageToInternalStorage is a code from google but I don't know how to use it. when I touch button2 follow the button1 action.

public class MainActivity extends Activity implements OnClickListener { Button btn, btn1; SurfaceView sv; Bitmap bitmap; Canvas canvas; @Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     btn=(Button)findViewById(R.id.button1);     btn1=(Button)findViewById(R.id.button2);     sv=(SurfaceView)findViewById(R.id.surfaceView1);      btn.setOnClickListener(this);     btn1.setOnClickListener(this);      bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);  } @Override public void onClick(View v) {     canvas=sv.getHolder().lockCanvas();     if(canvas==null) return;     canvas.drawBitmap(bitmap, 100, 100, null);     sv.getHolder().unlockCanvasAndPost(canvas);   }  public boolean saveImageToInternalStorage(Bitmap image) {      try {     // Use the compress method on the Bitmap object to write image to     // the OutputStream     FileOutputStream fos = openFileOutput("desiredFilename.png", Context.MODE_PRIVATE);      // Writing the bitmap to the output stream     image.compress(Bitmap.CompressFormat.PNG, 100, fos);     fos.close();      return true;     } catch (Exception e) {     Log.e("saveToInternalStorage()", e.getMessage());     return false;     }     }  } 
like image 894
Marius Hincu Avatar asked Mar 27 '13 15:03

Marius Hincu


People also ask

How do I save pictures to my internal storage?

This example demonstrates How to write an image file in internal storage in android. Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml.


1 Answers

To Save your bitmap in sdcard use the following code

Store Image

private void storeImage(Bitmap image) {     File pictureFile = getOutputMediaFile();     if (pictureFile == null) {         Log.d(TAG,                 "Error creating media file, check storage permissions: ");// e.getMessage());         return;     }      try {         FileOutputStream fos = new FileOutputStream(pictureFile);         image.compress(Bitmap.CompressFormat.PNG, 90, fos);         fos.close();     } catch (FileNotFoundException e) {         Log.d(TAG, "File not found: " + e.getMessage());     } catch (IOException e) {         Log.d(TAG, "Error accessing file: " + e.getMessage());     }   } 

To Get the Path for Image Storage

/** Create a File for saving an image or video */ private  File getOutputMediaFile(){     // To be safe, you should check that the SDCard is mounted     // using Environment.getExternalStorageState() before doing this.      File mediaStorageDir = new File(Environment.getExternalStorageDirectory()             + "/Android/data/"             + getApplicationContext().getPackageName()             + "/Files");       // This location works best if you want the created images to be shared     // between applications and persist after your app has been uninstalled.      // Create the storage directory if it does not exist     if (! mediaStorageDir.exists()){         if (! mediaStorageDir.mkdirs()){             return null;         }     }      // Create a media file name     String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date());     File mediaFile;         String mImageName="MI_"+ timeStamp +".jpg";         mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName);       return mediaFile; }  

EDIT From Your comments i have edited the onclick view in this the button1 and button2 functions will be executed separately.

public onClick(View v){  switch(v.getId()){ case R.id.button1: //Your button 1 function break; case R.id. button2: //Your button 2 function break; }  } 
like image 187
vinothp Avatar answered Oct 12 '22 07:10

vinothp