日期:2014-05-16 浏览次数:20480 次
?
直接入正题吧... ...
?
1.创建数据库表的时候选择存图片的字段类型为blob
?
StringBuffer createTableOfHistory = new StringBuffer();
createTableOfHistory.append("CREATE TABLE "+某表名);
createTableOfHistory.append(" ( _id INTEGER PRIMARY KEY AUTOINCREMENT ,");
createTableOfHistory.append(该存图片的字段名+" BLOB ,");
createTableOfHistory.append(其他字段名1+" TEXT ,");
.......
createTableOfHistory.append(其他字段名n+" TEXT );");//记得这里带个“;”封号
db.execSQL(createTableOfHistory.toString());//执行该创表语句
?
?
?
2.存储数据
? 2.1将数据流转成数组的方法
?
InputStream inputStream = getResources().openRawResource(R.drawable.icon);
private static byte[] streamToBytes(InputStream is) {
ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
byte[] buffer = new byte[1024];
int len;
try {
while ((len = is.read(buffer)) >= 0) {
os.write(buffer, 0, len);
}
} catch (java.io.IOException e) {
}
return os.toByteArray();
}
?
?
?2.2.将Bitmap对象转换成数组的方法【包含从资源文件中获得图片对象Bitmap】
?
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
private static byte[] bitmapToBytes(Bitmap bitmap){
if (bitmap == null) {
return null;
}
final ByteArrayOutputStream os = new ByteArrayOutputStream();
// 将Bitmap压缩成PNG编码,质量为100%存储
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);//除了PNG还有很多常见格式,如jpeg等。
return os.toByteArray();
}
ContentValues values = new ContentValues();
values.put(该存图片的字段名, readHistoryInfo.getBookIcon());
values.put(其他字段名1, “2011-05-17”);
......
return mSqliteDatabase.insert(表名, null, values);//插入数据
?