从 Android 中的 url 加载图像,仅当图像很小时

2023-12-01

我在用着BitmapFactory.decodeStream从 Android 中的 url 加载图像。我只想下载低于特定尺寸的图像,我目前正在使用getContentLength检查这个。

然而,我被告知getContentLength并不总是提供文件的大小,在这种情况下,我想在知道文件太大时立即停止下载。这样做的正确方法是什么?

这是我当前的代码。我目前返回 null ifgetContentLength没有提供答案。

HttpGet httpRequest = new HttpGet(new URL(urlString).toURI());
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
final long contentLength = bufHttpEntity.getContentLength();
if ((contentLength >= 0 && (maxLength == 0 || contentLength < maxLength))) {
    InputStream is = bufHttpEntity.getContent();
    Bitmap bitmap = BitmapFactory.decodeStream(is);
    return new BitmapDrawable(bitmap);
} else {
    return null;
}

1.您也可以尝试这种方法。我相信它不会下载大文件的内容

HttpURLConnection connection = (HttpURLConnection)new URL(url).openConnection();  
int length=connection.getContentLength(); 

if(length<max){  
  InputStream is = connection.getInputStream();  
  BitmapFactory.decodeStream(is,null,null);
}

这只是一个示例,您还可以添加 -1 和其他任何内容的检查。 这种方法与您所做的等效。这只是您可以尝试的又一种选择。我只知道 HttpURLConnection 在您开始从流中读取内容之前不会获取内容。所以这段代码不会下载大图片。我真的不知道 HttpClient 是否也这样做。

2.为什么实际上你想跳过较大的文件。如果您担心解码过程中内存不足,可以看看这个将图像加载到 Bitmap 对象时出现奇怪的内存不足问题。如果您应用inSampleSize,您甚至可以下载大图像。对于较大的图像,延迟会较大,但内存消耗会较低。我在这里发布了我的 ListView 示例ListView 中图像的延迟加载。它在 ListView 中显示图像。有不同尺寸的图像。图像不是很大,但无论如何。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Android 中的 url 加载图像,仅当图像很小时 的相关文章

随机推荐

  • 在对象内部使用“this”和对象名称进行引用有什么区别?

    如果我有以下代码 var obj x 34 init function alert this x alert obj x 两个警报都显示 34 但是有什么区别 一个比另一个更好吗 http jsfiddle net 4scz435q 我在j
  • 如何在 C++ 中编写正确的哈希表析构函数

    我正在写一个 C 哈希表 这是我的析构函数 HashMap HashMap for int i 0 i
  • 如何从 kdeplot 获取半高全宽 (FWHM)

    我在一些数据上使用了seaborn的kdeplot import seaborn as sns import numpy as np sns kdeplot np random rand 100 是否可以从创建的曲线返回 fwhm 如果不是
  • 教义 FindBy 方法与“OR 条件”?

    是否可以使用OR教义中的声明findBy method 我希望输出是这样的 SELECT FROM friends WHERE userId 1 OR FriendId 1 现在的代码 user repository gt findBy a
  • tf.where 的 TensorFlow 梯度在不应该返回 NaN 时返回 NaN

    下面是可重现的代码 如果运行它 您将看到在第一次 sess 运行中 结果为 nan 而第二种情况给出了正确的梯度值 0 5 但根据指定的 tf where 和条件 它们应该返回相同的值 我也根本不明白为什么 tf where 函数梯度在 1
  • 显示日志文件更新时的内容

    我有外部程序 例如 ffmpeg 和 gstreamer 在后台运行并写入日志文件 我想用我的 Flask 应用程序显示此日志的内容 以便用户可以观看日志更新 例如tail f job log会在终端做 我尝试使用指向日志文件 但未能显示数
  • pyspark中的DataFilter是什么?

    我看到一个叫做DataFilter在我的查询执行计划中 FileScan parquet product id 12 price 14 Batched true DataFilters isnotnull product id 12 For
  • 计时器:如何在后台保持计时器处于活动状态

    在我的 iPhone 定时器应用程序中 其中计时器应在后台运行 所以 我已经在 appdelegate 中设置了通知 它工作得很好 这样我就可以从视图控制器调用方法 这使得计时器处于活动状态 看一些代码 应用程序委托 void applic
  • h2混合模式连接问题

    我在 servlet 上下文侦听器中启动 h2 数据库 public void contextInitialized ServletContextEvent sce org h2 Driver load String apprealPath
  • 如何使用 proguard 获取发布构建 apk 文件

    我正在尝试使用ProGuard为了为我的项目制作发布 apk 文件 显然我正在使用许多第三方库 我只需要使用其中的几个类 我真的很想得到一些关于此的解释 我的调试版本超过20 MB 所以我想通过使用来减少它shrinking用于progua
  • NDB 查询 fetch() 和 ContextOptions

    我想仅在我的一个查询中禁用上下文缓存 我想我可以这样做 MyModel query ancestor user key fetch 100 options ContextOptions use cache False use memcach
  • HTML5 的 History.js - 需要进行黑客攻击才能不破坏 IE7

    我的目标是仅支持 HTML5 浏览器的 AJAX 历史记录 但是 我希望我的网站能够使用 HTML4 浏览器 但没有 AJAX 历史记录 许多 History js 示例在执行任何操作之前都包含以下检查 if History enabled
  • mailto链接多条正文线

    无法在 mailto 链接中使多行正常工作 就我而言 我正在使用 Outlook 默认邮件阅读器对其进行测试 以下内容放入锚点 href 中 mailto email protected subject test body type 20y
  • 如何防止 XmlSerialzer 转义“嵌套 XML”?

    我正在使用 XmlSerializer 来序列化 反序列化复杂对象 一个属性包含一个 XML 字符串 应将其写入字符串属性而不进行反序列化 示例 可在 LinqPad 中执行 XmlRoot RootObject Serializable
  • 从日期时间获取日期名称

    如何从 Python 中的日期时间对象获取日期名称 例如星期一 星期二 星期三 星期四 星期五 星期六和星期日 所以 举例来说 datetime 2019 9 6 11 33 0 应该给我 Friday import datetime no
  • 覆盖单个文件的编译标志

    我想使用一组全局标志来编译项目 这意味着我在顶级 CMakeLists txt 文件中指定了 ADD DEFINITIONS Wall Weffc pedantic std c 0x 但是 对于子目录中的特定文件 假设为 foo cpp 我
  • 用于重复数据删除的 Kafka 压缩

    我试图了解 Kafka 压缩的工作原理 并有以下问题 kafka 是否保证启用压缩的主题中存储的消息的键的唯一性 Thanks 简短的回答是否定的 Kafka 不保证启用主题保留时存储的密钥的唯一性 在 Kafka 中有两种类型cleanu
  • 如何在android中的fragment中添加选项卡?

    我尝试在片段内添加选项卡 我可以添加 但特定选项卡的内容与选项卡重叠 MainFragmentActivity java public class MainActivity extends FragmentActivity Override
  • 这是什么网页效果

    当你在堆栈溢出时达到 1000 声望时 你将获得一张消耗性用户卡 当您将鼠标悬停在卡片上时 我怎样才能重现这种效果 怎么称呼 我的猜测是它是一个 Jquery 方法 但如果是的话 有人可以指出我正确的方向 因为我寻找它但无法准确得到我需要的
  • 从 Android 中的 url 加载图像,仅当图像很小时

    我在用着BitmapFactory decodeStream从 Android 中的 url 加载图像 我只想下载低于特定尺寸的图像 我目前正在使用getContentLength检查这个 然而 我被告知getContentLength并不