首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NDK -将位图的像素保存为文件

问NDK -将位图的像素保存为文件
EN

Stack Overflow用户
提问于 2015-09-14 18:00:53
回答 1查看 1.7K关注 0票数 0

目前,我正在尝试使用NDK保存位图,而不是还原Java对象,而是直接使用C++像素数组。

我已经将位图存储在一个JniBitmapHolder中,我可以成功地获得存储的像素。我想尝试在不调用Bitmap.create方法的情况下保存它们。

目前,我正试图这样做(但没有成功):

代码语言:javascript
复制
Util.saveImageSync(Util.getOutputMediaFile("filtered"), jniBitmap.getBitmapArray());

该方法的实现方式如下:

代码语言:javascript
复制
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添加到库中,如下所示:

代码语言:javascript
复制
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位图?

此外,提示/指针也很受欢迎。

EN

回答 1

Stack Overflow用户

发布于 2015-09-17 16:55:21

经过进一步研究后,最快的方法是保留一个支持位图,将其传递给C++,而不需要每次使用该函数就创建一个新位图,然后使用它直接使用Java方法来保存像素。

不过,感谢Alex给出的答案:)实际上,问题在于缺少的标题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32571030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档