【问题标题】:Knowing the size of bitmap on sd card before saving it on sdcard在将位图保存到 sdcard 之前了解位图在 sd 卡上的大小
【发布时间】:2014-10-19 06:15:26
【问题描述】:

如果图像大小要在 SD 卡上占用 100KB,我必须在从 http 服务器下载后压缩位图,如果达到 100 KB,则不要压缩。

所以,我想在将位图保存到 sdcard 之前知道 sd 卡上位图的大小,以便在必要时压缩位图。 image.getRowHeight()*image.getHeight() 给出的大小与 file.length() 不同。

【问题讨论】:

  • 大多数图像格式已经被压缩,因此在大多数情况下再次压缩是无用的。
  • @Henry 我有 jpg 格式的图片?
  • jpg 已被压缩。你可以尝试用一些测试图像再次压缩它,没有什么收获。

标签: android file bitmap


【解决方案1】:

使用您的 http 客户端检查响应的 Content-Lenght 标头字段。

rfc2616

Content-Length entity-header 字段表示 entity-body,十进制的八进制数,发送给接收者,或者,在 在 HEAD 方法的情况下,实体主体的大小将 如果请求是 GET,则已发送。

【讨论】:

  • 简单地使用 content-length 就可以了 或者应该注意什么?
  • Content-Lenght 的值保存了正在下载的图像的大小,因此除非没有 Content-Encoding: gzip, deflate 标头,否则使用它非常好。但不应该有图片请求。
  • 就我而言,我在“content-length”标头中没有得到任何值。
  • 你能把图片的网址贴出来吗?
【解决方案2】:

official android document 中所述,以下技术允许您在构建位图(和内存分配)之前读取图像数据的尺寸和类型。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;

要查看文件大小(以字节为单位),请使用File.length()

【讨论】:

  • 我要知道字节的大小。高度和宽度有助于在分配时给出大小。
猜你喜欢
  • 2012-10-21
  • 2012-08-04
  • 2012-01-29
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2012-09-02
相关资源
最近更新 更多