我使用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 但查询是空的 - 没有行。 那是为什么?
如何获取下载图像的缩略图?
答案 0 :(得分:1)
使用BitmapFactory
inSampleSize
,BitmapFactory.Options
创建缩略图。
或者,将当前代码替换为Picasso,教会它将图片大小调整为合适的缩略图大小,特别是如果您不需要将全尺寸图像用于其他目的。