【问题标题】:Why is the bitmap size smaller than other hdpi folders when put the image into xxxhdpi?为什么将图像放入xxxhdpi时位图大小比其他hdpi文件夹小?
【发布时间】:2022-01-17 02:17:37
【问题描述】:

代码如下:

imageIv.setImageResources(R.id.icon);

计算图像位图大小:

imageIv.getDrawable().getBitmap();

这是将图像放入不同文件夹时的结果:

 |  folder   | bitmap size  |
 |  ----  | ----  |
 | drawable  | 96×96->36 k |
 | xhdpi  | 96×96->36 k |
 | xxhdpi  | 96×96->36 k |
 | xxxhdpi  | 84×84->27 k |

图片原尺寸为96×96 px。 如上图,为什么xxxhdpi文件夹和其他文件夹的位图大小不一样?

【问题讨论】:

  • 你需要清楚一点。你从哪里得到这些数字的?你如何测量它们?如果这些只是文件夹中图像的大小 - 这些是由您提供的,而不是由应用程序创建的。因此,如果其中一个大小不正确,则说明人们放入文件夹的内容存在问题。
  • 只有一个图像,但是当我将图像放入 xxxhdpi 文件夹时,我得到的位图大小不同。
  • 您不应该将相同的图像放入每个文件夹。如果需要,您应该将适当缩放的版本放入不同的文件夹中(如果该分辨率下缩放图像的保真度不够好。
  • 谢谢。我只是想知道为什么将图像放入 xxxhdpi 文件夹时它的位图大小不同。

标签: android bitmap


【解决方案1】:

我假设这些是来自项目选项卡下项目下拉菜单中的 res 文件夹中的 mipmap 图像。 [基于您给出的命名约定的假设。 xhdpi、xxhdpi 等]

那里,这是您正在谈论的文件夹。对吧?

如果您只是想添加图像,请右键单击 res 文件夹。从那里,选择图片资源。

从那里,选择图标类型和您想要的一切。然后,一旦完成,android studio 会自动为不同的像素大小生成不同的图像。

它具有不同图像尺寸的原因是每个常规屏幕尺寸都有一个图像。这样做是为了让 android 不必缩小或放大图像,因为放大或缩小的图像并不总是看起来最好的。当您使用矢量图像时,这一点非常重要。如果您还没有更改文件夹中的任何内容,您会在其中找到 android 默认生成的不同大小的默认应用程序图标。这些是使用可绘制和可绘制 v26 文件夹中的矢量图像生成的。 (矢量图像具有以“.xml”结尾的扩展名

【讨论】:

  • 谢谢。如果把一张图片分别放入mdpi、xhdpi、xxhdpi、xxxhdpi,为imageview设置ImageResource。并且计算图像位图内存,你会发现除了 xxxhdpi 中的图像之外,内存成本是相同的。我只是想知道为什么。
  • 可能存在分辨率上限。所以,如果你添加一个分辨率更高的图像,android studio 可能会在你不做任何事情的情况下缩小它。这是我能想到的唯一解释。这也可以解释为什么您的图像分辨率会从 96*96 减少到 84*84。
  • 我和你有同样的想法,但是从源代码上我没有支持。
  • 您不必添加对分辨率限制的支持。默认情况下它可能在那里。此外,它可能会将您的图像缩小到 84*84,因为它认为分辨率更容易放大,因为直接将 96*96 转换为 192*192 可能会导致锯齿问题(或者换句话说,像素化问题可能更容易理解)
猜你喜欢
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 2016-11-28
  • 2015-01-19
  • 2010-12-28
相关资源
最近更新 更多