解码后位图字节大小?
如何确定/计算位图的字节大小(使用 BitmapFactory 解码后)? 我需要知道它占用了多少内存空间,因为我正在我的应用程序中进行内存缓存/管理。 (文件大小不够,因为这些是 jpg/png 文件)
感谢您提供任何解决方案!
更新: getRowBytes * getHeight 可能会成功。我会这样实现它,直到有人提出反对它的东西。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
getRowBytes() * getHeight()
对我来说似乎工作得很好。更新我大约 2 年前的答案:
由于 API 级别 12 位图有一个直接的方法来查询字节大小:
http://developer.android.com/reference/android /graphics/Bitmap.html#getByteCount%28%29
----示例代码
getRowBytes() * getHeight()
seems to be working fine to me.Update to my ~2 year old answer:
Since API level 12 Bitmap has a direct way to query the byte size:
http://developer.android.com/reference/android/graphics/Bitmap.html#getByteCount%28%29
----Sample code
最好只使用支持库:
但是如果您的 Android 项目至少使用 19 的 minSdk(kitkat,意思是 4.4),则可以只使用 bitmap.getAllocationByteCount() 。
It's best to just use the support library:
But if you have the Android project to use at least minSdk of 19 (kitkat, meaning 4.4), you can just use bitmap.getAllocationByteCount() .
这是利用 KitKat 的
getAllocationByteCount()
的编写是为了让编译器理解版本逻辑(因此不需要@TargetApi
)请注意
getAllocationByteCount()
可以大于getByteCount()
如果重用位图来解码其他较小尺寸的位图,或者通过手动重新配置。Here is the 2014 version that utilizes KitKat's
getAllocationByteCount()
and is written so that the compiler understands the version logic (so@TargetApi
is not needed)Note that the result of
getAllocationByteCount()
can be larger than the result ofgetByteCount()
if a bitmap is reused to decode other bitmaps of smaller size, or by manual reconfiguration.与 @user289463 答案的唯一区别是 KitKat 及以上版本使用
getAllocationByteCount()
。The only difference with @user289463 answer, is the use of
getAllocationByteCount()
for KitKat and above versions.