0

我有一个显示某些杂志首页的应用程序。这些图像是高分辨率的。如果我只想显示低分辨率图片,那么下载整个图像是无用的和电池/时间/数据消耗。所以问题是:如何从图像 URL 中获取缩略图 URL,这样我就不需要下载图像了?

4

3 回答 3

4

使用服务器端进程(PHP、ASP...等)创建缩略图,然后从新 URL 下载。

于 2012-08-01T00:37:04.057 回答
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

耐心点……算术很难。

于 2012-08-01T01:16:49.190 回答
0

如果图像被隔行扫描/用于渐进式下载,您可以想象只下载一些文件数据并使用它来创建缩略图,但这是一个非常专业的用例,不太可能得到广泛支持。

否则,鉴于对图像格式和支持检索特定字节范围的服务器的深入了解,您可以选择性地仅下载必要的图像数据来创建缩略图,但这将非常困难。

很可能,虽然您的想法很有趣并且可能有用,但没有办法做到这一点

根据杂志的数量,您可能会考虑使用单独的服务器来下载封面图像并准备它们的缩略图。然后,您的移动应用程序可以先查询该服务器,如果缩略图可用,则使用它而不是下载全尺寸图像。

于 2012-08-01T00:37:38.360 回答