2014-11-27 2 views
2

Я пишу весь проект Android в NDK C/C++, и теперь я хочу открыть некоторые файлы jpg.Является ли libjpeg всегда установленным с Android?

Ive читает много людей, предлагающих компилировать libjpeg или libjpeg-turbo для использования с NDK, но другие, предлагающие libjpeg уже в Android, это правда?

Я бы предпочел использовать существующую библиотеку, но не хочу полагаться на нее, если некоторые единицы ее не там.

ответ

0

0 спасибо за помощь, я надеялся, что libjpeg был доступен для моего развития, но, как указано, находится в Android, но не публично через NDK.

Итак, я потратил некоторое время на чтение спецификации для jpg и решил написать C-декомпрессор с нуля, пока я не упал на jpgd Rich Geldreich, и хотя C++ его единственная реализация jpeg-распаковщика в общественном достоянии, которую я сейчас использовал без любые проблемы на Android.

У него также есть сопутствующий jpge (encodeder), хотя излишек моих требований для этого проекта стоит отметить.

Приложение NO-JAVA продолжается.

Решение: C++ jpg Decompressor Android NDK

2

Я использую libjpeg-turbo, статически связанный с моими другими libs, он отлично работает. Я не думаю, что libjpeg уже установлен на Android.

+0

Что хорошо, просто помните, * «Если вы используете его в программе , вы должны признать, где-то в документации, что вы использовали IJG код.» * –

1

Даже если libjpeg уже существует в android, это не общедоступный API, поэтому любой выигрыш, который вы получите, не связав его, может вернуться и укусить вас позже. Я бы сказал, что это не стоит того, чтобы связать вашу собственную копию libjpeg (или аналогичного), чтобы вы не полагались на внутренности платформы.

Если применимо, вы можете использовать, например. некоторые из публичных API-интерфейсов Java (android.graphics.BitmapFactory и т. д., которые в конечном итоге называет внутренний связанный libjpeg или что-то еще) через JNI для декодирования ваших изображений - тогда вам не нужно отправлять библиотеку jpeg самостоятельно, но вам нужно сделать немного больше вызовов функций JNI. (Возможно, небольшие издержки на производительность по сравнению с вызовом libjpeg напрямую, но не значительны, если вы не загружаете огромное количество изображений.) Если вам интересно, я могу поделиться примером для этого (это около 50 строк).

Смежные вопросы