/**
* 将Bitmap转换成字符串保存至SharedPreferences
*
* 注意: 在压缩图片至输出流时,不要选择CompressFormat.JPEG而该是PNG,否则会造成图片有黑色背景
*/
private void saveBitmapToSharedPreferences() {
//得到要保存的图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.
as);
// 第一步:将Bitmap压缩至字节数组输出流ByteArrayOutputStream
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 80, byteArrayOutputStream);
// 第二步:利用Base64将字节数组输出流中的数据转换成字符串String
byte[] byteArray = byteArrayOutputStream.toByteArray();
String image = new String(Base64.encodeToString(byteArray,
Base64.DEFAULT));
// 第三步:将String保持至SharedPreferences
SharedPreferences spf = getSharedPreferences("testSP", MODE_APPEND);
Editor editor = spf.edit();
editor.putString("image", image);
editor.commit();
}
-------------------------------------------------------------------------------------------------------------------------------------
/**
* 从SharedPreferences中取出Bitmap,显示在ImageView中
*/
private void getBitmapFromSharedPreferences() {
SharedPreferences spf = getSharedPreferences("testSP", MODE_APPEND);
// 第一步:取出字符串形式的Bitmap
String image = spf.getString("image", "");
// 第二步:利用Base64将字符串转换为ByteArrayInputStream
byte[] byteArray = Base64.decode(image, Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
byteArray);
// 第三步:利用ByteArrayInputStream生成Bitmap
Bitmap bitmap = BitmapFactory.decodeStream(byteArrayInputStream);
//设置图片到imageview
mImageView.setImageBitmap(bitmap);
}