11 votes

Comment enregistrer une image bitmap dans une base de données ?

Je voudrais savoir comment enregistrer un bitmap dans une base de données. J'ai créé une table dans la base de données sous la forme suivante :

@Override
public void onCreate(SQLiteDatabase db)
{
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,image BLOB)");         
}    

Mon problème est que je n'arrive pas à insérer l'image. Veuillez me dire dans quel format je dois insérer l'image.

16voto

Punit Sachan Points 383

Si vous avez une image bitmap, vous pouvez procéder comme suit.

Bitmap photo = <Your image>
ByteArrayOutputStream bos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, bos);
byte[] bArray = bos.toByteArray();

Vous pouvez ensuite enregistrer les données dans un tableau en procédant de la manière suivante.

db = YourDBHelper.getInstance(ctx).getWritableDatabase();    
ContentValues values = new ContentValues();         
values.put("image", bArray);            
db.insert(TABLE_NAME , null, values);

10voto

DArkO Points 5974

Si vous voulez faire cela, vous devez utiliser un blob. mais pourquoi devez-vous faire cela ? je ne stockerais pas d'images dans une base de données. il vaut mieux stocker l'image sur la carte SD et ensuite stocker son chemin dans la base de données. souvent, les bases de données sont installées sur la mémoire du téléphone et cela ne fera que remplir la mémoire du téléphone...

0voto

0voto

Karthik Points 391

Essayez celui-ci

InputStream is = mycon.getAssets().open("data/Images/img1");
                if (is.available() == -1) {
                    Log.v(null, "Images not read to Input stream");
                }
                if (is != null) {
                    BufferedInputStream bis = new BufferedInputStream(is, 128);
                    ByteArrayBuffer barb = new ByteArrayBuffer(128);
                    // read the bytes one by one and append it into the
                    // ByteArrayBuffer barb
                    int current = 0;
                    while ((current = bis.read()) != -1) {
                        barb.append((byte) current);
                    }
                    values.put("imageData", barb.toByteArray());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X