我必须将相机捕获的图像保存在 SQLITE DB 中?有人可以帮我吗?我是 Android 新手。
问问题
2072 次
4 回答
3
我们总是将图像的 url 保存在 db 中。
但是,您也可以获取图像的字节并将数据插入 db(哪一列是 Blob)。
于 2013-06-17T11:56:38.293 回答
0
您可以将图像保存为BLOB
格式...
或者。您可以使用 Base64 将其转换并保存为CLOB
格式..
查看此链接以获取参考
我同意@tianwei,将图像保存到 Sqlite 是个坏主意。您应该将其路径保存到 sqlite。与文本信息相比,图像的尺寸很大。
从 sqlite 保存和检索图像会很困难。
因此,我建议您将图像存储在外部文件夹中,并将其路径存储到 sqlite 数据库中。
于 2013-06-17T11:55:52.133 回答
0
使用“blob”存储图像。您需要将该图像存储在字节数组中。
要存储图像,您可以使用以下代码:
public void insertImg(int id , Bitmap img ) {
byte[] data = getBitmapAsByteArray(img);
insertStatement_logo.bindLong(1, id);
insertStatement_logo.bindBlob(2, data);
insertStatement_logo.executeInsert();
insertStatement_logo.clearBindings() ;
}
public static byte[] getBitmapAsByteArray(Bitmap bitmap) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0, outputStream);
return outputStream.toByteArray();
}
于 2013-06-17T11:58:30.940 回答
0
然后创建图像的位图
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
dba.open();
dba.insertPhoto(byteArray);
其中 dba 是数据库类的对象。
在数据库类中创建表,例如:
private static final String CREATETABLE_PHOTO = "create table eqpphoto("EImage BLOB " + ");";
public static final String TABLE_PHOTO = "eqpphoto";
public long insertPhoto(byte[] EImage) {
try {
System.out.println("Function call : ");
ContentValues values = new ContentValues();
values.put(EIMAGE, EImage);
return db.insert(TABLE_PHOTO, null, values);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
于 2013-06-17T11:59:06.623 回答