Buffer Class¶
Description¶
(since 2.1.0) Buffer 存储了原始字节数组,可以用来访问图像数据。
在Java API中可以从Image中获取buffer然后copy数据到Java字节数组。
在EasyAR SDK的所有版本中,你都可以访问图像数据,而且这在EasyAR SDK 2.1中变得更加简单。
在iOS中可以这样访问
#import <easyar/buffer.oc.h>
#import <easyar/image.oc.h>
easyar_Frame * frame = [streamer peek];
for (easyar_Image * i in [frame images]) {
easyar_Buffer * b = [i buffer];
char * bytes = calloc([b size], 1);
memcpy(bytes, [b data], [b size]);
//TODO: use bytes here
free(bytes);
}
在Android里面, (since 2.1.0)
import cn.easyar.Buffer;
import cn.easyar.Image;
Frame frame = streamer.peek();
for (Image i : frame.images()) {
Buffer b = i.buffer();
byte[] bytes = new byte[b.size()];
b.copyTo(bytes, 0);
//TODO: use bytes here
}
在2.1.0之前,你只能将data传到JNI然后自己往Java中传回数据,或者也可以直接在C/C++层使用。
data¶
返回原始内存数据(字节数组)。
- C: void * easyar_Buffer_data(const easyar_Buffer * This)¶
- C++11: void * data()¶
- Traditional C++: void * data()¶
- Java: public native long data()¶
- Objective-C: - (void *)data¶
- Swift (since EasyAR SDK 2.1.0): public func data() -> OpaquePointer¶
size¶
原始内存数据的字节长度。
- C: int easyar_Buffer_size(const easyar_Buffer * This)¶
- C++11: int size()¶
- Traditional C++: int size()¶
- Java: public native int size()¶
- Objective-C: - (int)size¶
- Swift (since EasyAR SDK 2.1.0): public func size() -> Int32¶
copyTo¶
复制buffer数据到用户数组。
- Java: public native void copyTo(byte[] data, int index)¶