gpt4 book ai didi

android - 如何使用 JNI 将字节数组数据写入 android 中的 .jpg 文件

转载 作者:行者123 更新时间:2023-11-29 21:20:50 25 4
gpt4 key购买 nike

我想在 android 中使用 JNI 将数据的字节数组存储到 .jpg 文件中。我使用以下代码,它将存储字节数组数据,但 .jpg 文件未打开或在手机图库中打开文件时显示错误。

这里 bmpArray : 字节数组文件路径:sdcard目录+文件名

void Java_com_appsforbb_businesscardreader_ImageUtility_setNativeBitmapArray(JNIEnv* env, jclass object,jbyteArray bmpArray,jstring filePath)
{
jbyte* bmp= env->GetByteArrayElements(bmpArray, 0);
jsize length = env->GetArrayLength(bmpArray);
jbyteArray arr = env->NewByteArray(length);
const char* path = env->GetStringUTFChars(filePath, 0);
FILE* file = fopen( path, "w+" );
fwrite(bmpArray, 1, length, file );
fflush(file);
fclose(file);
LOGI("Byte array stored..");
}

是的,我找到了解决方案将参数bmpArray替换为bmp

 void Java_com_appsforbb_businesscardreader_ImageUtility_setNativeBitmapArray(JNIEnv* env, jclass object,jbyteArray bmpArray,jstring filePath)
{

jbyte* bmp= env->GetByteArrayElements(bmpArray, 0);
jsize length = env->GetArrayLength(bmpArray);
const char* path = env->GetStringUTFChars(filePath, 0);
FILE* file = fopen( path, "w+" );
fwrite(bmp, 1, length, file );
fflush(file);
fclose(file);
free(bmp);
free(file);
LOGI("---------->byte array stored..");

}

最佳答案

忘掉 JNI,用 Java 来做:

OutputStream out = new FileOutputStream(filePath);
out.write(bmpArray);
out.close();

如果这没有比您发布的更正版本运行更快,我会感到惊讶。

关于android - 如何使用 JNI 将字节数组数据写入 android 中的 .jpg 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20760618/

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