我的应用程序显示了一些杂志的头版。那些图像是高分辨率的。如果我只是要显示低分辨率图像,那么下载整个图像是没用的,电池/时间/数据消耗。所以问题是:如何从图像URL获取缩略图URL,这样我就不需要下载图像了?
答案 0 :(得分:4)
使用服务器端进程(PHP,ASP等)创建缩略图,然后从新URL下载。
答案 1 :(得分:3)
我认为Dave是对的,最佳解决方案是修改图像服务器端。但是,听起来你可能无法100%控制下来的图像。在提取较少的数据方面,这并没有给你留下很多选择......
如何最大限度地减少设备上的内存使用量,可以将图像下采样到合适的大小,以便保存在内存和显示中的图像尽可能大。
你可以使用看起来像这样的代码(记得清理你的流):
FileInputStream fis = new FileInputStream(new File(path));
final BufferedInputStream is = new BufferedInputStream(fis);
final Options opt = new BitmapFactory.Options();
// THIS IS THE IMPORTANT LINE:
opt.inSampleSize = sampleSize;
Bitmap img = BitmapFactory.decodeStream(is, null, opt);
您可以在此处阅读:http://developer.android.com/training/displaying-bitmaps/load-bitmap.html了解如何获取适当的样本量并使用 inJustDecodeBounds 。
耐心等待......算术很难。
答案 2 :(得分:0)
如果图像是隔行扫描/逐行下载的,那么您可以想象只下载一些文件数据并使用它来创建缩略图,但这是一个非常专业的用例,不太可能得到广泛支持。 / p>
否则,鉴于深入了解支持检索特定字节范围的图像格式和服务器,您可以选择性地仅下载必要的图像数据以创建缩略图,但是将非常困难。
很有可能,虽然你的想法很有趣并且可能有用,但却无法做到这一点。
根据杂志的数量,您可能会考虑使用单独的服务器来下载封面图像并准备缩略图。然后,您的移动应用程序可以首先查询该服务器,如果有可用的缩略图,请使用它而不是下载完整尺寸的图像。