Jak zapisać dane tablicy bajtów do pliku .jpg w systemie Android przy użyciu JNI
Chcę przechowywać tablicę bajtów danych w pliku .jpg, używając JNI w systemie Android. Używam następującego kodu, zapisze dane tablicy bajtów, ale plik .jpg nie jest otwarty lub pokaże błąd podczas otwierania pliku w galerii telefonu.
Tutaj bmpArray: tablica bajtów ścieżka_pliku: katalog sdcard + nazwa_pliku
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..");
}
tak mam rozwiązanie zastąpić parametr bmpArray w bmp
to znaczy
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..");
}