MediaStore.Images.Media.getBitmap занимает слишком много времени - PullRequest
0 голосов
/ 11 февраля 2019

Я хотел бы проверить, есть ли хотя бы одно человеческое лицо на моих фотографиях во внешнем хранилище.

Я запрашиваю внешнее содержимое следующим образом:

   queryTimeTaken += measureTimeMillis {
        try {
            cursor = context.contentResolver.query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                projection,
                null,
                null,
                sortOrderAndFetchLimit
            )
        } catch (e: Exception) {
            println("Error when executing query(): $e")
        }
    }

get uri занимает 0.004s

getUriTimeTaken += measureTimeMillis {
    uri = ContentUris.withAppendedId(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns._ID)).toLong())

}

getBitmap () занимает слишком много времени.Это занимает около 10 секунд.

getBitmapTimeTaken += measureTimeMillis {
    bitmap = MediaStore.Images.Media.getBitmap(context.contentResolver, uri)
}

getBitmap () занимает 90% от общего времени, так что это бутылочное горлышко здесь.Что я могу сделать, чтобы сделать это быстрее?

1 Ответ

0 голосов
/ 18 февраля 2019

Вместо полноразмерных изображений я использую их миниатюры, и это намного быстрее, чем раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...