如何获取不在相机文件夹中的图像缩略图

时间:2013-10-10 16:17:48

标签: android bitmap thumbnails

我使用httpurlconnection下载图像文件,然后保存以供以后在外部存储文件夹中使用

private Bitmap getBitmap(String path) {

    File f = new File(path);
    File tempFile = null;
    Bitmap bitmap = null;
    if (f.exists()) {
        // from SD projects
        if (f.isDirectory()) {

            return null;
        }
        bitmap = decodeFile(f, 0);
        if (bitmap != null)
            return bitmap;
    } else {
        // from web
        try {

            URL imageUrl = new URL(path.toString());

            HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
            conn.setConnectTimeout(TIMEOUT);
            conn.setReadTimeout(TIMEOUT);
            conn.setInstanceFollowRedirects(true);
            InputStream is = conn.getInputStream();

            tempFile = fileCache.getTempFile();
            OutputStream os = new FileOutputStream(tempFile);
            copyStream(is, os);
            os.flush();
            os.close();
            is.close();
            // LogUtils.d(TAG, "required size: " + requiredSize);
            bitmap = decodeFile(tempFile, 0);

            return bitmap;
        } catch (Throwable ex) {
            Log.e(TAG, "error decoding bitmap", ex);
            if (ex instanceof OutOfMemoryError) {
                thumbsCache.clear();
            }
        } finally {

        }
    }
    return bitmap;
}

然后使用以下代码获取位图文件缩略图:

public static Bitmap getThumbnail(ContentResolver cr, String path, int kind) {
    Cursor ca = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.MediaColumns._ID }, MediaStore.MediaColumns.DATA + "=?", new String[] { path }, null);
    try {
        if (ca != null && ca.moveToFirst()) {
            int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID));
            ca.close();
            return MediaStore.Images.Thumbnails.getThumbnail(cr, id, kind, null);
        }
    } catch (Exception e) {
        Log.w(TAG, "exception getting thumbnail: "+path+ " kind : "+kind);
    }

    finally {
        ca.close();
    }
    return null;
}

文件存在,我查了一下 查询不是null 但查询是空的 - 没有行。 那是为什么?

如何获取下载图像的缩略图?

1 个答案:

答案 0 :(得分:1)

使用BitmapFactory inSampleSizeBitmapFactory.Options创建缩略图。

或者,将当前代码替换为Picasso,教会它将图片大小调整为合适的缩略图大小,特别是如果您不需要将全尺寸图像用于其他目的。