2013-06-05 4 views
0

Je crée actuellement des miniatures en utilisant la méthode ThumbnailUtils.createVideoThumbnail(); qui renvoie un bitmap. Cependant, je veux stocker cette vignette dans une base de données afin que je puisse y accéder plus tard et je n'ai pas à continuer à recréer les vignettes. Mes questions est comment dois-je stocker cette vignette dans la base de données? Les vignettes ont-elles des chemins de fichiers? Ou devrais-je créer les vignettes et juste les récupérer en utilisant le Mediastore chaque fois que je dois l'utiliser? Si oui, comment pourrais-je sauvegarder/stocker la vignette afin de pouvoir utiliser le médiastore pour l'interroger?Comment stocker les miniatures pour les récupérer facilement

Merci pour votre aide.

Répondre

2

Si vous obtenez un objet Miniature de la vidéo, vous devez l'enregistrer dans le stockage ou la base de données.

Pour enregistrer dans la base de données:

Bitmap thumbnailBitmap; // Get it with your approach 
SQLiteDatabase writableDb; // Get it with your approach 

if (thumbnailBitmap != null) { 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    thumbnailBitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
    byte[] thumbnailBitmapBytes = stream.toByteArray(); 

    ContentValues values = new ContentValues(); 
    values.put("IMAGEID", "your_image_id"); 
    values.put("BYTES", thumbnailBitmapBytes); 
    writableDb.insert("TABLE_NAME", null, values); 
} 

Pour récupérer la base de données:

public static synchronized Bitmap getImage(String imageID, Context context) { 
    SQLiteDatabase writableDb; // Get it with your approach 
    Bitmap bitmap = null; 
    Cursor cs = null; 

    try { 
     String sql = "SELECT BYTES FROM TABLE_NAME WHERE IMAGEID = ?;"; 
     cs = writableDb.rawQuery(sql, new String[]{imageID}); 

     if (cs != null && cs.moveToFirst()) { 
      do { 
       byte[] bytes = cs.getBlob(0); 

       if (bytes != null) { 
        try { 
         bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
        } catch (Exception e) { 
         Log.e("TAG", "Exception", e); 
        } 
       } else { 
        Log.e("TAG", "IMAGE NOT FOUND"); 
       } 

      } while (cs.moveToNext()); 
     } 

    } catch (Exception e) { 
     Log.e("TAG", "Exception", e); 
    } finally { 
     if (cs != null) { 
      cs.close(); 
     } 
    } 

    return bitmap; 
} 

La structure de base de données:

String imageTable = "CREATE TABLE TABLE_NAME(" 
     + "IMAGEID TEXT PRIMARY KEY, " 
     + "BYTES BLOB)"; 
Questions connexes