blitz-time アプリ開発ブログ

Androidアプリ開発などのTips集

【Androidアプリ開発】JPEGファイルからサムネイル写真を取得

アプリ内で端末内の写真の一覧を表示する際、写真が多いと非常に時間がかかります。
f:id:mfblitz:20190518092047p:plain
また、最近の端末の写真は高解像度なので、ファイルサイズも大きくなり、1枚当たりの処理時間もかかります。
撮影した写真は通常JPEGで保存されますが、そのデータ内にExifという情報が付加されます。

このExif情報の中に写真を小さくしたサイズの「サムネイル」が保存されています。
このサムネイルだけを抜き出せば、大きな写真のデータ全体を処理する必要がなくなり、写真のファイルを読み込む速度を向上させることができます。

static public Bitmap loadThumbBitmap( Context ctx, Uri uri ){
    Bitmap bitmap = null;

    try {
        InputStream in;
        in = ctx.getContentResolver().openInputStream(uri);
        ExifInterface ex = new ExifInterface(in);
        bitmap = ex.getThumbnailBitmap();
        in.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    return bitmap;
}