总而言之,这就是我想要做的:
我想将 5 兆像素图像的 100x100 区域(任何部分)加载到 Android Bitmap 类中,以便我可以将其绘制到画布元素上,就 这么简单。这就是我想做的一切。就是这样。而已。一点也不差。听起来很简单。因此,在你脸上露出笑容之前,请继续往下阅读。
我知道这个问题已经被问了一百万次了。我也做了功课,研究它。不幸的是,我从各个方面都陷入了死胡同。也许我需要让我的问题足够清楚。
Android VM 允许分配的堆数量是有限制的。因此,使用以下功能无法加载大位图,即使是来自其自己的相机(我拥有 Nexus S)的位图。
BitmapFactory.decodeStream(InputStream is)
是的,我可以使用BitmapFactory.Options来缩放它,但是我应该如何放大呢?
现在我正在尝试设计一个可以平滑地放大/缩小图像的图像查看器。显然,如果我什至无法加载图像,那是不可能的。
在姜饼中,我们有一个新类BitmapRegionDecoder,但我正在为 Froyo 设计我的应用程序。所有这些类都与使用Skia 2D 图形库的本机 api 挂钩。Android NDK 也不提供对这些 api 的访问权限。也许有一种方法可以手动构建 Skia 并使用它来加载 java 位图。但我不确定如何?
在这个应用程序中似乎已经解决了(http://blog.javia.org/how-to-work-around-androids-24-mb-memory-limit/ ) - https://market.android.com /details?id=image.viewer通过使用malloc/new在本机 C 代码中分配的内存。但我不知道怎么做?
所以让事情更清楚我想要的是可以将图像放大/缩小到全分辨率的东西。如果可能的话,它应该是平滑的,或者至少可以在单独的线程中完成。
如果我需要使用 OpenGL,也请给我一个示例代码。