我正在使用 Volley 下载图像,将其保存到磁盘缓存并在 ImageView 上显示。我已经成功地做到了,但我现在想要的是将下载的位图调整到一个新的维度(一种缩略图)。如果我可以将位图、原始图像和缩略图都保存到磁盘中,那就太好了。
你能给我一些关于我该怎么做的提示吗?
我正在使用 Volley 下载图像,将其保存到磁盘缓存并在 ImageView 上显示。我已经成功地做到了,但我现在想要的是将下载的位图调整到一个新的维度(一种缩略图)。如果我可以将位图、原始图像和缩略图都保存到磁盘中,那就太好了。
你能给我一些关于我该怎么做的提示吗?
在 Android 中管理位图是一件复杂且消耗内存的事情。处理缩略图的最有效方法是为您保存在服务器上的每个图像创建一个缩略图版本,这样图像处理已经“离线”完成,您需要做的就是使用正确的版本。您可以有效地更快地下载一堆小图像,并根据请求延迟加载全尺寸图像。
但是,如果您不控制保存图像的服务器,并且不关心自己创建这样的服务器,那么您可以通过以下方式完成您想要的事情:
Bitmap
为内存缓存(或磁盘缓存,或两者兼有)创建一个简单的缓存。
当您想在您的ImageView
(显示调整大小的图像的图像)中显示图像时,请执行以下操作:
一个。检查缓存是否存在缩略图 - 如果它确实返回并显示它
湾。如果它不请求它并为结果分配一个侦听器。
应该使用ImageLoader.get()
带有自定义的方法请求每个需要缩略图版本的图像ImageListener
:
public class MyImageListener implements ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
// handle errors
}
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
Bitmap bitmap = response.getBitmap();
if (bitmap != null) {
// manipulations, resize, etc.
// save manipulated bitmap in cache
// notify listener from section 2.b. if one exists
}
}
}