Проблемы с FreeImage на Android (NDK)

Я попытался использовать библиотеку FreeImage для загрузки PNG в виде текстуры (из памяти). Это фрагмент кода:

FIMEMORY *fiStream = FreeImage_OpenMemory(streamData, size);
FREE_IMAGE_FORMAT fileFormat = FreeImage_GetFileTypeFromMemory(fiStream, 0);
FIBITMAP *image = FreeImage_LoadFromMemory(fileFormat, fiStream, 0);

int bitsPerPixel = FreeImage_GetBPP(image);

width = (int)FreeImage_GetWidth(image);
height = (int)FreeImage_GetHeight(image);

Я использую FILE с fopen, чтобы открыть файл, а затем прочитать поток в объект streamData. Файл и поток читаются корректно.

Результат: fileFormat = -1 и image имеет значение NULL.

Я также пытался использовать FreeImage для загрузки файла PNG непосредственно с диска с помощью FreeImage_Load, но результат тот же — он возвращает NULL.

Кто-нибудь сталкивался с подобной проблемой? Можете ли вы предложить альтернативу FreeImage, которая может считывать данные из памяти?


person rafalczuj    schedule 26.11.2014    source источник
comment
Вы решили это? У меня есть аналогичная проблема: stackoverflow .com/questions/42120978/   -  person user7428910    schedule 08.02.2017
comment
@user7428910 user7428910 На самом деле мы изменили библиотеку для обработки png. Не удалось заставить это работать с FreeImage   -  person rafalczuj    schedule 06.06.2017


Ответы (1)


попробуйте этот код, чтобы загрузить изображение из памяти:

File file = new  File("/sdcard/Images/image1.jpg");

if(file.exists()){
    Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
    ImageView image = (ImageView) findViewById(R.id.imageview);
    image.setImageBitmap(bitmap);
}
person Miki Franko    schedule 26.11.2014
comment
Спасибо за быстрый ответ, но скорее ищете чистое нативное решение - person rafalczuj; 26.11.2014