Saving and Reading Bitmaps/Images from Internal memory in Android
Use the below code to save the image to internal directory.
private String saveToInternalStorage(Bitmap bitmapImage){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,"profile.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return directory.getAbsolutePath();
}
Explanation :
1.The Directory will be created with the given name. Javadocs is for to tell where exactly it will create the directory.
2.You will have to give the image name by which you want to save it.
To Read the file from internal memory. Use below code
private void loadImageFromStorage(String path)
{
try {
File f=new File(path, "profile.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
ImageView img=(ImageView)findViewById(R.id.imgPicker);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
Saving an image from ImageView into internal storage
Got it working!
I used this code to create a directory in my file storage and then store the image:
FileOutputStream outStream = null;
// Write to SD Card
try {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/camtest");
dir.mkdirs();
String fileName = String.format("%d.jpg", System.currentTimeMillis());
File outFile = new File(dir, fileName);
outStream = new FileOutputStream(outFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
Log.d(TAG, "onPictureTaken - wrote to " + outFile.getAbsolutePath());
refreshGallery(outFile);
} catch (FileNotFoundException e) {
print("FNF");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
My permissions:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Finally, the most important thing:
Go to Device Settings>Device>Applications>Application Manager>"your app">Permissions>Enable Storage permission!
How to save a bitmap on internal storage
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;
}
}
How can i save my captured image to internal storage and then read it .....Here is my piece of code
use below function in your activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Bundle bundle=data.getExtras();
Bitmap bitmap=(Bitmap)bundle.get("data");
iv1.setImageBitmap(bitmap);
SaveBitmap(bitmap)
}
private void SaveBitmap(Bitmap finalBitmap) {
String sdCard = Environment.getExternalStorageDirectory().toString();
File myDir = new File(sdCard + "/app_name");
myDir.mkdirs(); // creating dir
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); // creating a unique file name
String fname = "IMG"+ timeStamp +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete (); // del file filr if already exists
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Related Topics
How to Start New Activity on Button Click
How to Filter a Recyclerview With a Searchview
How to Filter Specific Apps For Action_Send Intent (And Set a Different Text For Each App)
How to Save Users Score in Firebase and Retrieve It in Real-Time in Android Studio
Best Use of Handlerthread Over Other Similar Classes
Install_Failed_No_Matching_Abis When Install Apk
Imageview in Circular Through Xml
How to Convert a Base64 String into a Bitmap Image to Show It in a Imageview
Activity Has Leaked Window That Was Originally Added
Jdbc VS Web Service For Android
How to Prevent a Dialog from Closing When a Button Is Clicked
How to Set the Part of the Text View Is Clickable
Viewpager and Fragments - What's the Right Way to Store Fragment'S State
Horizontalscrollview Within Scrollview Touch Handling