Библиотека обработки изображений для Android и Java - PullRequest
24 голосов
/ 13 июля 2011

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

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

Ответы [ 5 ]

11 голосов
/ 24 января 2012

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

5 голосов
/ 10 февраля 2014

Ответы на этой странице довольно датированы по состоянию на февраль 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.

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

3 голосов
/ 19 июля 2011

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

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

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

1 голос
/ 18 июля 2011

Octoate,

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

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

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

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

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

0 голосов
/ 14 июля 2011

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

Barry

...