Как записать данные байтового массива в файл .jpg в Android с помощью JNI
Я хочу сохранить массив байтов данных в файл .jpg с помощью JNI в Android. Я использую следующий код, он будет хранить данные байтового массива, но файл .jpg не открыт или будет отображаться ошибка при открытии файла в телефонной галерее.
Здесь bmpArray: байтовый массив filePath: каталог 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..");
}