【问题标题】:How to store thumbnails for easy retrieval如何存储缩略图以便于检索
【发布时间】:2013-05-31 14:34:41
【问题描述】:

我目前正在使用ThumbnailUtils.createVideoThumbnail() 方法创建缩略图;它返回一个位图。但是,我想将该缩略图存储在数据库中,以便以后可以访问它,而不必继续重新创建缩略图。我的问题是我应该如何将这个缩​​略图存储在数据库中?缩略图有文件路径吗?或者我应该创建缩略图并在每次需要使用时使用 Mediastore 检索它们?如果是这样,我将如何保存/存储缩略图以便我可以使用 Mediastore 来查询它?

感谢您的帮助。

【问题讨论】:

    标签: android sqlite thumbnails


    【解决方案1】:

    如果您从视频中获取缩略图对象,您需要将其保存在存储或数据库中。

    保存在数据库中:

    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);
    }
    

    从数据库中取回:

    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;
    }
    

    数据库结构:

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

    【讨论】:

      猜你喜欢
      • 2019-08-22
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 2017-01-19
      • 1970-01-01
      相关资源
      最近更新 更多