是否有可能强制Android位图具有给定的内存对齐并为其像素迈进?

时间:2014-06-17 22:33:22

标签: android c bitmap android-ndk memory-alignment

我有一些用C编写的Android图形程序,可以操作位图和像素数组(ARGB格式,32bpp)。这些例程是从Java端调用的。

为了提高效率,我需要数组的每一行都是16字节内存对齐。

但是当我操作位图时,我使用lockpixels()得到的数组通常是8字节对齐的。

在Android中,有没有办法强制Bitmap像素数组具有给定的对齐和步幅?

我已经读过,从分配的像素数组创建位图有时不会复制它们但只使用相同的数组,这对我来说是完美的。但是,如果在Android中就是这种情况,不知道它是否总是安全的,也不知道如何操作。

修改

在阅读了更多关于它的内容后,感谢Seva Alekseyev的作品,我想我必须重新制定一些东西。如果我理解正确,

  • 在Java端创建位图时,系统会选择 其像素的内存和根据像素格式的步幅, 以便行具有最小对齐。
  • 但是,当在位图上执行ops时,例程仍然使用步幅 值(无论它们是什么)来访问像素。

  • 所以,我的问题是如果可以强制像素 位图的结构是先前通过JNI分配的位图, 自定义步幅(仍然允许最低要求 对齐,也许更多)。

  • 这类似于来自@VideoGuy的Can I create a Bitmap that uses malloced buffer I created in native code?,它没有任何已接受的答案,所以最后这可能是前一个问题的副本。

但仍然不知道是否可能......

0 个答案:

没有答案