gpt4 book ai didi

java - 位图/ Canvas 的使用和 NDK

转载 作者:搜寻专家 更新时间:2023-11-01 08:16:05 26 4
gpt4 key购买 nike

我最近发现,NDK 代码可以分配的内存量没有硬性限制,而您可以在 Java 端分配的内存量非常有限(在大多数设备上约为 25Mb)。

我想编写一个图像处理应用程序(类似于 Photoshop),它需要同时在内存中保存多个大位图,其中位图数据将占用约 20Mb 的内存。在 Java 中执行此操作会使应用程序在我尝试过的许多设备上容易出现内存不足异常。

我当前的所有代码都使用 Bitmap 和 Canvas 类来进行图像处理。 谁能建议一些方法,让我可以在 C 端分配大部分内存,并仍然使用 Bitmap+Canvas 来执行我的绘图操作(使用 Android 2.1 及更高版本)?

例如,如果我的图像由 6 个位图图层组成,用户在第 3 层上绘画,我需要在第 3 层上绘制一个 paint blob 位图,然后更新屏幕以显示所有展平的结果实时层叠在一起。我考虑过将 C 中的 6 个位图分配为 int 数组,并使用存储在 Bitmap 对象中的正在编辑的图层副本在 Java 端使用 Canvas 执行绘画操作。不过,我不确定扁平化阶段将如何运作。

最佳答案

查看 NDK 中的“bitmap-plasma”示例。它在 Java 中创建位图并在 native 代码中操作位。一种可能的技术是您可以分配大块内存并将图像保存在 native 代码中,然后简单地将“ View ”渲染到 Java 创建的位图中。渲染 View 和对图像层进行“扁平化”的方法可能应该在 native 代码中完成。类似的东西:

...用户更改了图层...

My_native_render_code(MyDisplayBitmap);

无效();

关于java - 位图/ Canvas 的使用和 NDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com