Android中显示任意尺寸的位图

发布于 2024-09-07 16:45:37 字数 397 浏览 2 评论 0原文

我想在 Android 中以实际像素大小显示从 SD 卡读取的位图。

除了 Android 支持其图像格式之外,我无法假设有关位图的任何信息。位图可能很大。

看起来很简单,但当你考虑 Android 内存限制时,事情就会变得更加复杂。

有什么想法吗?

编辑:尝试加载大位图会出现内存不足错误,因为 Android 无法分配足够的内存来对其进行解码。您可以加载位图的缩小版本,但这对于以实际像素大小显示位图没有用。问题是如何在 Android 上显示大位图,同时保持应用程序的内存限制(最有可能通过分块加载)。

编辑2:位图可能很大,但在合理范围内。我说的是用户图像,而不是美国宇航局的高清图片。

I want to display a bitmap read from the SD card at actual pixel size in Android.

I can't assume anything about the bitmap, other than Android supports its image format. The bitmap might be huge.

Seems simple enough, but when you factor Android memory limitations it gets much more complicated.

Any ideas?

Edit: Attempting to load a large bitmap gives an out of memory error because Android is not able to allocate enough memory to decode it. You can load a scaled down version of the bitmap, but this is not useful to show the bitmap at actual pixel size. The question is about how to show a large bitmap on Android while staying within the app's memory constraints (most likely by loading it in chunks).

Edit 2: The bitmap might be huge, but within the realm of reasonable. I'm talking about user images, not HD Nasa pictures.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

关于从前 2024-09-14 16:45:44

从 android 2.3(Gingerbread,API 级别 10)开始,您可以使用 BitmapRegionDecoder。我不知道旧的 Android 版本有什么解决方案。 (我一直在为我的 EmailAlbum 应用程序寻找它)

Since android 2.3 (Gingerbread, API Level 10), you can use the BitmapRegionDecoder. I don't know any solution for older android versions. (and I've been looking for it for my EmailAlbum app)

百合的盛世恋 2024-09-14 16:45:42

即使您的设备有更多的可用内存,托管代码 (Java) 的内存限制也为 16/24/32MB。我目前正在开发一个需要执行此操作的应用程序,解决方案是在本机代码 (NDK) 中分配位图,然后将图像视图渲染到 Java 分配的位图(即显示器的大小)中。在本机代码中,您可以分配设备的所有可用内存,但由于某种原因虚拟机限制了它。

The managed code (Java) has memory limits of 16/24/32MB even if your device has a lot more free memory. I'm currently working on an application which needs to do this and the solution is to allocate the bitmap in native code (NDK) and then render views of the image into a Java-allocated bitmap which is the size of the display. In native code you can allocate all available memory of the device, but for some reason the virtual machine limits it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文