Библиотека обработки изображений для Android и Java

В настоящее время я работаю над небольшим проектом, который загружает изображение с URL-адреса, изменяет размер и изменяет глубину цвета до 16 цветов, используя указанную цветовую палитру. Главная проблема для меня в том, что я хочу программу, которую я могу использовать на устройстве Android и на настольном компьютере. Вы знаете хорошую библиотеку обработки изображений, которая работает в обеих системах?

Заранее спасибо.

Solutions Collecting From Web of "Библиотека обработки изображений для Android и Java"

Существует несколько инструментов:

Ответы на этой странице довольно датированы по состоянию на февраль 2014 года. Я искал бесплатную библиотеку обработки изображений для Android, и я наткнулся на лекции Стэнфорда здесь: http://www.stanford.edu/class/ee368/Android/ index.html

Изучив еще немного, я узнал, что они используют OpenCV в своем материале курса. Он имеет интерфейс Java (наряду со многими другими языками), но библиотека написана изначально на C ++. Они заявляют, что:

Наряду с такими хорошо известными компаниями, как Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota, которые используют библиотеку, есть много стартапов, таких как Applied Minds, VideoSurf и Zeitera, которые широко используют OpenCV.

Я взволнован (!), Чтобы найти это, с нетерпением жду, чтобы вернуться домой и уйти.

Android NDK позволяет использовать существующую библиотеку C / C ++, которая не требует java.awt или любого из классов Android. Например, вы можете легко скомпилировать libpng как общую библиотеку для Android, а затем написать интерфейс JNI для передачи изображений с уровня Java в библиотеку png. Аналогичным образом, вы также сможете скомпилировать libpng как общую библиотеку для своего настольного компьютера и использовать ее оттуда.

Недавно я написал учебное пособие о том, как скомпилировать библиотеки с открытым исходным кодом для Android. Если вы просматриваете исходный код Android, вы найдете несколько классов, которые используют графическую библиотеку skia через jni. Раньше я не использовал skia, но, поскольку Android имеет skia в своей базовой структуре, не должно быть слишком сложно заставить его работать в вашей программе приложения / рабочего стола.

Написание кросс-платформенных программ является областью, представляющей большой интерес среди сообщества разработчиков мобильных устройств, и некоторые из них, такие как libgdx , очень хорошо справились с этим. То, что вы пытаетесь, безусловно, возможно.

октоат

Я не думаю, что есть библиотека, которая существует, которая делает то, что вы хотите, причина в том, что на немобильной платформе каждая графическая операция, которую вы собираетесь использовать в Java, в какой-то степени будет использовать конвейер рендеринга Java2D. На Android этого не существует.

Android предоставляет собственный графический конвейер для манипулирования изображениями и фактически упрощает многие вещи, которые сложнее в стандартной Java.

Все, что было сказано, похоже, что вы нашли библиотеку (JJIL), которая действует как слой абстракции поверх этих различий, в этом случае я немного обеспокоен производительностью и проведу некоторые тесты в своем собственном коде, чтобы увидеть, как это происходит Выполняется по сравнению с методами платформы. Например, я видел эту цитату из JJIL:

Позволяет конвертировать изображения из растровых изображений Android в JJIL RgbImages

Когда я смотрю на источник для RgbImages , похоже, что данные изображения преобразуются и сохраняются во внутреннем массиве; Все эти уровни абстракции будут стоить вам процессорного времени и памяти, особенно, поскольку изображения на мобильных устройствах становятся больше благодаря камерам с более высоким разрешением и высокоскоростным соединениям.

Это может быть не так уж и важно, но, опять же, вы, вероятно, захотите провести сравнение профилирования / тестирования / производительности.

Любая чистая библиотека Java должна работать на обеих платформах. Поиск Google в «Библиотеке обработки изображений Java» дал несколько результатов. Попытайтесь найти самый легкий вес lib, который служит вашим целям, так как память и процессор ограничены на мобильных устройствах.

Барри