【发布时间】:2015-09-14 18:00:53
【问题描述】:
我目前正在尝试使用 NDK 保存位图而不恢复 Java 对象,而是直接使用 C++ 像素数组。
我已经将位图存储在 JniBitmapHolder 中,并且可以成功获取存储的像素。我想尝试在不调用 Bitmap.create 方法的情况下保存它们。
目前我正在尝试这样做(没有成功):
Util.saveImageSync(Util.getOutputMediaFile("filtered"), jniBitmap.getBitmapArray());
并且方法是这样实现的:
public static void saveImageSync(final File outputFile, final ByteBuffer buffer){
FileOutputStream out = null;
try {
out = new FileOutputStream(outputFile);
out.getChannel().write(buffer);
} catch (Exception e) {
Dbg.d("ERROR", e);
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
我已将方法 getBitmaArray 添加到库中,如下所示:
JNIEXPORT jobject JNICALL Java_com_jni_bitmap_1operations_JniBitmapHolder_jniGetBitmapArray(
JNIEnv * env, jobject obj, jobject handle) {
JniBitmap *jniBitmap = (JniBitmap *) env->GetDirectBufferAddress(handle);
jniBitmap->_storedBitmapPixels;
return env->NewDirectByteBuffer(jniBitmap->_storedBitmapPixels, 0);
}
但似乎直接像素阵列不够或不正确。有没有其他想法直接将像素保存到文件而不需要创建 Java 位图?
也非常感谢提示/指针。
【问题讨论】:
标签: java android c++ bitmap android-ndk