在sqlite Android中保存图像?

时间:2014-03-27 23:02:46

标签: android image sqlite

我有这个类,我在sqlite中创建我的表,everthing工作得很好,在我的项目中你可以插入,删除和更新(信息)的学生和老师,但现在我想要保存图像,它意味着除了保存我要保存图像的学生或老师的信息之外,有人可以帮助我吗?你不知道如何做到这一点。

包MyClasses;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class sqliteClass extends SQLiteOpenHelper{

String sqlAlumno = "CREATE TABLE Alumno(id integer primary key,nombre varchar(30),apellidos varchar(25),especialidad varchar(25),email varchar(25))";

String sqlProfe = "CREATE TABLE Profe(id integer primary key,nombre varchar(30),apellidos varchar(25),especialidad varchar(25),email varchar(25))";

    public sqliteClass(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sqlAlumno);
        db.execSQL(sqlProfe);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


    }

}

3 个答案:

答案 0 :(得分:1)

一般而言:

在您的创建表格查询中添加类型为blob的列,例如image blob

插入图片

ContentValues cv = new ContentValues();
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
yourBitmap.getBitmap().compress(Bitmap.CompressFormat.PNG, 100, out);
cv.put(KEY_IMG, out.toByteArray());

恢复图片
使用Cursor#getBlob()方法获取图像并将其存储在byte[]数组

byte[] blob = cursor.getBlob(cur.getColumnIndex("image"));

将byte []转换为位图:

Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);

但是我认为在大级别存储数据库中的图像并不重要,因为sqlite的空间有限,因此存储图像路径很有价值。

答案 1 :(得分:0)

有几种方法可以将图像存储到android sqlite数据库。

stackoverflow.com/questions/10977584

stackoverflow.com/questions/9357668

stackoverflow.com/questions/9273008

希望这些帮助!

答案 2 :(得分:0)

通常认为将二进制数据保存为数据库中的图像是不好的形式。在大多数情况下,由于某些技术原因,它实际上最终会损害数据库的性能。而是将要缓存的图像保存到SD卡中,并将这些图像的文件路径存储在数据库中。

始终养成保存图像数据库路径的习惯。对于列表视图,请确保只使用这些图像的缩略图。这将有助于您快速加载列表中的这些图像。

long selectedImageUri = ContentUris.parseId(Uri.parse(anniEntry.getUri())); Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail( mContext.getContentResolver(), selectedImageUri,MediaStore.Images.Thumbnails.MICRO_KIND, null );

这里的anniEntry.getUri()是图片uri.Now,把它放在第二个代码中。我可以根据需要获得微缩图或迷你缩略图