【问题标题】:Download a thumbnail instead of whole image下载缩略图而不是整个图像
【发布时间】:2012-07-29 20:38:39
【问题描述】:

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

【问题讨论】:

  • 有点离题,但你可能想看看Cloudinary。您可以将图像发送给他们进行存储,然后通过请求特殊 URL 轻松获取动态生成的缩略图。
  • 这似乎是我真正需要的。如果我的问题不是那么准确,我很抱歉。如果我可以只引用一个 URL 而不必上传它,那将是完美的。
  • 不幸的是,您仍然需要将图像上传到他们的服务,但是一旦这样做,它确实可以为您节省大量工作。

标签: java android image url download


【解决方案1】:

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

【讨论】:

  • 我在发帖前对此进行了一些研究,似乎每个在线缩略图提供商看起来都像这个 [link]www.makeathumbnail.com[/link]。他们让您上传图像并获取缩略图,但无法对此进行编码。另一方面,有数百个 Web 快照站点提供网页快照的缩略图。我要求更简单的东西,它必须在那里。谢谢。现在我知道它可能已经存在了。
  • 您可以找到一些非常简单的 PHP 图像调整/缓存脚本(一个是 phpThumb)并在不需要第三方站点/软件的情况下实现它。
【解决方案2】:

我觉得 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

耐心点……算术很难。

【讨论】:

  • 获得图像后,我将其作为 Drawable 提供给 ImageView。我认为 ImageView 会为我解决这个问题。持有比你能显示的分辨率更大的 Drawable 有什么意义?如果我在缩略图方面失败了,我会实现这个。太棒了!
  • 所以 ImageView 默认会将图像缩小到其边界,但它会将整个图像保留在内存中,因此如果 ImageView 的边界变大,图像将拉伸/收缩。开发人员可以对图像进行采样以满足我们的需求。叹息,工作。
  • 再次感谢。看起来这个功能就是捏缩放使用的。实施的。现在低 RAM 设备会喜欢我 :)
【解决方案3】:

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

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

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

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

【讨论】:

  • 感谢您的快速答复,但我正在考虑在线服务。我给他们图片网址,他们给我缩略图网址。
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 2012-04-29
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 2012-06-04
相关资源
最近更新 更多