答案 0 :(得分:0)
您可以保存数据库中图像的路径。然后在下一个活动中,检索它,如果文件存在则显示它......
当用户从图库中选择图片时,我猜您会从onActivityResult()
获取URI。你只需要使用像这样的代码获取它的路径:
private String getRealPathFromURI(Uri contentUri) {
String[] store = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(mContext, contentUri, store, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String result = cursor.getString(column_index);
if (cursor != null ) {
cursor.close();
}
return result;
}
只需按照您希望的方式保存数据库中的路径即可。
稍后,尝试获取该文件。如果文件存在,请更新您的ImageView
File file = new File(savedPath);
if(file.exists){
// load image in your imageView
Bitmap mBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
yourImageView.setImageBitmap(mBitmap);
}
答案 1 :(得分:-1)
图像在Sqlitedatabase中存储为BLOB。
用于将图像保存到数据库
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getItemname());
values.put(KEY_DESCRIPTION, contact.getDescription());
Log.i("","Adding image of Type Bitmap"+contact.getImage());
if(contact.getImage()!=null) {
values.put(KEY_IMAGE, Utility.getBytes(contact.getImage()));
}
getBytes(Bitmap)的位置是:
public static byte[] getBytes(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0, stream);
return stream.toByteArray();
}
从数据库中提取图像时:
if(cursor.getBlob(3)!=null)
{
contact.setImage(Utility.getPhoto(cursor.getBlob(3));
}
else
{
contact.setImage(null);
}
getPhoto(BLOB)将是:
// convert from byte array to bitmap
public static Bitmap getPhoto(byte[] image) {
return BitmapFactory.decodeByteArray(image, 0, image.length);
}