First you need to convert image to Base64 String representation and then store it in shared
preference as follows :
Bitmap realImage = BitmapFactory.decodeStream(stream);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
textEncode.setText(encodedImage);
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit=shre.edit();
edit.putString("image_data",encodedImage);
edit.commit();
and you can retrieve the image using Bitmap as :
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
String previouslyEncodedImage = shre.getString("image_data", "");
if( !previouslyEncodedImage.equalsIgnoreCase("") ){
byte[] b = Base64.decode(previouslyEncodedImage, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
imageView.setImageBitmap(bitmap);
}
if You are using capturing image with camera or picking up from galleryin both way you can use this methods as :
private static final int CAPTURE_IMAGE = 0;
private static final int SELECT_PICTURE = 1;
and then implement this method :
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
storeImage(thumbnail);
} else if (requestCode == SELECT_PICTURE) {
Uri mImageUri = data.getData();
Bitmap thumbnail = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), mImageUri);
storeImage(thumbnail);
}
}
and store Image method is as follows :
private void storeImage(Bitmap thumbnail) {
// Removing image saved earlier in shared prefernces
shre = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor edit=shre.edit();
edit.remove("image_data");
edit.commit();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File destination = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
imageview.setImageBitmap(thumbnail);
byte[] b = bytes.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
//saving image to shared preferences
edit.putString("image_data",encodedImage);
edit.commit();
}
preference as follows :
Bitmap realImage = BitmapFactory.decodeStream(stream);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
textEncode.setText(encodedImage);
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit=shre.edit();
edit.putString("image_data",encodedImage);
edit.commit();
and you can retrieve the image using Bitmap as :
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
String previouslyEncodedImage = shre.getString("image_data", "");
if( !previouslyEncodedImage.equalsIgnoreCase("") ){
byte[] b = Base64.decode(previouslyEncodedImage, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
imageView.setImageBitmap(bitmap);
}
if You are using capturing image with camera or picking up from galleryin both way you can use this methods as :
private static final int CAPTURE_IMAGE = 0;
private static final int SELECT_PICTURE = 1;
and then implement this method :
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
storeImage(thumbnail);
} else if (requestCode == SELECT_PICTURE) {
Uri mImageUri = data.getData();
Bitmap thumbnail = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), mImageUri);
storeImage(thumbnail);
}
}
and store Image method is as follows :
private void storeImage(Bitmap thumbnail) {
// Removing image saved earlier in shared prefernces
shre = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor edit=shre.edit();
edit.remove("image_data");
edit.commit();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File destination = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
imageview.setImageBitmap(thumbnail);
byte[] b = bytes.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
//saving image to shared preferences
edit.putString("image_data",encodedImage);
edit.commit();
}
textEncode.setText(encodedImage); this line is unrecognized symbol whats the decleration for it
ReplyDeleteit is not working
ReplyDelete