Серверная обработка изображений - PullRequest
1 голос
/ 03 апреля 2010

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

1) Используйте чистые библиотеки изображений Java, такие как java.awt или http://www.jhlabs.com/ip/index.html 2) Используйте инструменты командной строки, такие как Gimp / ImageMagick 3) Используйте библиотеки изображений c, c ++, которые имеют привязки Java.

Я не знаю, какой из вышеперечисленных вариантов хорош, учитывая производительность. Похоже, что варианты 2) и 3) являются хорошими с точки зрения производительности, но я хочу быть уверен, прежде чем исключить 1). Я также слышал, что gimp нельзя запустить с помощью командной строки, если на сервере не установлены gtk или xwindows. Будут ли такие проблемы с 2) или 3) при запуске их на стороне сервера?

Также, пожалуйста, предложите любые хорошие библиотеки обработки изображений для этой цели.

Ответы [ 11 ]

2 голосов
/ 03 апреля 2010

Imagemagick или graphicsmagick довольно хороши, обертки для них можно найти на большинстве языков.

Существует довольно много онлайн-примеров и руководств по работе с изображениями с использованием этих библиотек

2 голосов
/ 05 апреля 2010

Просто, чтобы усложнить ситуацию, у GIMP есть API с оболочкой Java: JGIMP .

1 голос
/ 05 апреля 2010

Я могу рекомендовать использовать библиотеки C ++ и интерфейс из Java с ними. Например, Intel Performance Primitives, оптимизированные для инструкций SSE и многоядерных, например. Для некоторых операций это может быть на порядок быстрее. IPP включает высокооптимизированные функции для большинства основных операций, таких как: размытие, преобразование цветов, различные фильтры и т. Д.

0 голосов
/ 22 октября 2013

Существует множество платформ обработки изображений, которые можно использовать в приложениях на стороне сервера Java (J2EE).

Взгляните на Марвин .Вы можете настроить проект таким же образом в приложении J2SE.Если вы используете Tomcat, скопируйте папку Marvin в корень tomcat и добавьте marvin_version.jar в свои библиотеки проектов.Вы можете обработать любое изображение на стороне сервера, используя множество алгоритмов .

. В случае возникновения каких-либо проблем используйте группу обсуждения проекта или Google о том, как использовать Marvin в приложении J2EE.

Постепенное сообщение о запуске Marvin на стороне сервера: Добавление MarvinFramework в WebApp на Tomcat7

0 голосов
/ 01 мая 2010

Я занимаюсь разработкой веб-приложения для создания и обработки изображений в Интернете, которое называется rastaq (первый просмотр http://rq -online.deesceha.de ). Это веб-приложение на Java, и вся графика основана на Java 2D. Он расширяется новыми операторами и типами. Поиграйте и посмотрите, сколько времени потребуется для пересчета изображения с новыми параметрами.

Аппаратная платформа - четырехъядерный процессор Intel с 8 ГБ ОЗУ.

0 голосов
/ 06 апреля 2010

У меня не будет собственных серверов. Мне придется пойти с хостинг-провайдером. Это немного усложняет установку программного обеспечения, для которого могут потребоваться разрешения root.

Я развернул сервлет Java в размещенной среде, используя библиотеку jhlabs для простых операций обработки изображений, таких как масштабирование серого, и заметил 2 вещи

  1. У вас еще не было проблем с безголовым окружением. Возможно, эта проблема возникнет позже, когда я попытаюсь выполнить более сложные операции по обработке изображений.
  2. Производительность была неплохой. Но я должен выполнить нагрузочное тестирование, чтобы убедиться, что производительность приемлема при реалистичной нагрузке.
0 голосов
/ 05 апреля 2010

Если у вас есть серверы, лучший вариант - установить большой толстый графический процессор или два и использовать несколько ускоренных библиотек графического процессора для обработки изображений. В моем собственном простом коде обработки изображений в CUDA (поворот изображения) я получаю более чем 100-кратное ускорение по сравнению с процессором с Geforce GTX-285 (240-ядерный графический процессор)

0 голосов
/ 04 апреля 2010

@ WizardOfOdds: Если я вас правильно понял, нам нужен xvnc для запуска программ, которые не должны работать без заголовка. Но дело в том, что если у нас уже нет xvnc в размещенной среде env или у нас недостаточно прав для установки xvnc, мы все равно не сможем запустить на компьютере программы, для которых требуется полная графическая среда. Я думал, что это имело место в большинстве размещенных сред (кроме выделенного сервера, который они предоставляют, где у вас есть полный контроль). Поправь меня, если я ошибаюсь.

0 голосов
/ 04 апреля 2010

Вам следует изучить обработку изображений в пакете Java2D и, если это вообще возможно, запустить на коробке Windows с подходящей видеокартой, поскольку Java может использовать ее для ускорения операций Java2D.

0 голосов
/ 03 апреля 2010

Я думаю, что лучше всего попробовать вариант 1), а если он недостаточно быстр, попробовать вариант 2). Я выполняю обработку изображений на стороне сервера в некоторых своих приложениях, и я считаю, что производительность довольно хорошая.

...