我有这个类,我在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) {
}
}
答案 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,把它放在第二个代码中。我可以根据需要获得微缩图或迷你缩略图