Подтвердить что ты не робот

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

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

Спасибо заранее.

4b9b3361

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Ответ 4

октоит,

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

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

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

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

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

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

Ответ 5

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

Barry