我有一个SQLite数据库,我直接插入数据,它应该显示为我的app用户的预存数据。我的代码对于一个图像工作正常。但不知道转换和检索图像数组
我试过 Bitmap bitmap = BitmapFactory.decodeResource(getResources()。pmge); 。但是我导致了decodeResource()synatx的错误
码
public class MainActivity extends Activity {
Integer [] pmge ={R.drawable.candle1,R.drawable.candl3,
R.drawable.candl4,R.drawable.candl5,R.drawable.candl6,
R.drawable.lawn,R.drawable.sglc10,R.drawable.senson,R.drawable.thejus6669};
MyDataBase myDataBase;
SQLiteDatabase database;
Cursor c;
ImageView imageView;
byte[] img,img1;
Bitmap b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView=(ImageView)findViewById(R.id.imge);
myDataBase=new MyDataBase(getApplicationContext(),"imagedata",null,1);
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.candle1);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
img=bos.toByteArray();
database=myDataBase.getWritableDatabase();
Bitmap b1=BitmapFactory.decodeByteArray(img, 0, img.length);
imageView.setImageBitmap(b1);
}
}
class MyDataBase extends SQLiteOpenHelper{
public MyDataBase(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table tableimage (image BLOB,);");
db.execSQL("INSERT INTO tableimage(image) VALUES(img) ");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:0)
你必须使用BLOB格式在Table中存储图像。你应该将Image转换为流然后存储它。我希望这个可以帮助你:)
答案 1 :(得分:0)
答案 2 :(得分:0)
将您的图像转换为Bitmap,然后将位图转换为byte [],然后将其作为Blob存储在数据库中。
要将位图转换为byte [],您可以使用:
Bitmap yourBitmap;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
yourBitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
byte[] bArray = bos.toByteArray();
而不是检索/获取图像
byte[] byteArray = DBcursor.getBlob(columnIndex);
Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0 ,byteArray.length);
答案 3 :(得分:0)
不能将图像直接存储到数据库中,有多种方法可以做到这一点。 e.g
首先,您需要在表格中创建 BLOB 类型的字段。
第二步将图像转换为字节数组。
最后将Byte Array存储/推送到数据库表中数据类型为 BLOB 的特定列
答案 4 :(得分:0)
我建议不要直接在数据库中存储图像。只需将图像存储在特定路径上,并将该图像的路径存储在数据库中。
检查此答案:https://stackoverflow.com/a/3751/1739882
不保留在数据库中存储文件的原因: