Быстрое преобразование JPEG-2000 в JPEG из командной строки с несколькими ОС

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

Простые варианты использования включают: convert -resize 750 H:/221136.png -, который просто изменяет размер входного изображения до ширины 750 и выводит необработанные данные на консоль. Более сложные варианты использования включают поворот, изменение размера, обрезку / панорамирование и рисование.

Скрипт отлично работает и довольно быстро работает с входными данными PNG, GIF и JPEG даже при довольно больших размерах (разрешение 4000x5000). К сожалению, мои входные данные также включают JPEG-2000. Обработка 10–15-мегабайтного JPEG2000 занимает безумное количество времени, порядка 10–15 секунд. Он не подходит для преобразования "на лету".

Я знаю, что быстрое преобразование JPEG-2000 в JPEG для вывода в Интернет возможно, потому что часть программного обеспечения Enterprise, с которым я работаю, делает это довольно быстро. Я не уверен, какую библиотеку они используют - DLL / поэтому они используют DL80JP2KLib.dll / .so. Глядя на это, кажется, что это делает компания под названием DataLogic, но у них, похоже, нет никаких явно подходящих программ на их сайтах.

В идеале я ищу решение (плагин?), Которое позволило бы ImageMagick конвертировать эти изображения JPEG-2000 с высоким разрешением на лету, как это происходит с PNG, GIF или JPEG ... или отдельной командой утилиту, которую я могу запустить до ImageMagick, чтобы преобразовать JPEG-2000 в промежуточный формат, который ImageMagick может быстро обработать.

Серверы, на которых будет запускаться этот скрипт, имеют 32 гигабайта оперативной памяти и мощные процессоры. Предположим, что скорость преобразования важнее эффективности использования ресурсов. Предположим также, что, хотя мне нужно некоторое подобие качества, потеря изображения не является актуальной проблемой. Лицензионные требования и / или цена не важны, за исключением того, что мне нужно самому протестировать его на скорость на нескольких образцах файлов, прежде чем мы купим. Идеальное решение также (относительно) не зависит от ОС.

Я попробовал приложение от Kakadu Software, оно довольно быстрое, порядка 3-4 секунд, но этого все еще недостаточно. Если нет возможности получить ниже, скажем, одну секунду, я заранее посмотрю на пакетное преобразование файлов.

Я загрузил в MediaFire типичный файл (JPEG-2000, ~ 8 МБ): http://www.mediafire.com/?yxv0j6vdwx0k996


person aaron    schedule 15.12.2011    source источник
comment
Я вообще этого не знаю, но вы пробовали писать скрипты gimp? Плагин существует по адресу registry.gimp.org/node/16241.   -  person fge    schedule 15.12.2011
comment
У меня нет, но производственная версия Gimp не поддерживает JP2K по умолчанию, и на первый взгляд плагин GIMP JP2K использует библиотеку Openjpeg (code.google.com/p/openjpeg). Openjpeg предлагает собственную двоичную утилиту командной строки, которая, честно говоря, имеет довольно низкую производительность для случая использования живого преобразования. Может быть, 10-15 секунд на файл снова, и, как Kakadu, выводит только в промежуточные форматы, такие как .raw или .bmp, которые все равно нужно будет обрабатывать ImageMagick.   -  person aaron    schedule 15.12.2011
comment
Я смотрю на это с другой точки зрения; Хотя 10-15 секунд действительно кажутся долгим сроком, установка ожиданий пользователей - большая часть восприятия производительности. Протестируйте всплывающее уведомление «Обработка ввода JPEG-2000 занимает больше времени, должна завершиться через 10-15 секунд»; если у вас есть опытные пользователи, это может быть все, что вам нужно. Удачи!   -  person shellter    schedule 16.12.2011
comment
@shellter Дело в том, что мне действительно не нужно устанавливать ожидания пользователей. Как я уже упоминал в своем первоначальном вопросе, я уже использую корпоративное программное обеспечение, которое на лету обрабатывает JPEG-2000 для веб-обслуживания. На самом деле, используя точные исходные файлы, которые я пытаюсь обработать сам. Но поскольку корпоративное программное обеспечение скомпилировано, не принимает произвольных входных данных и не документирует используемую им библиотеку (как я уже упоминал, DL80JP2KLib.dll / .so), я не могу этого сделать.   -  person aaron    schedule 16.12.2011
comment
Да, я прочитал ваш вопрос и сказал: «Вот другая перспектива». Если это не сработает, я понимаю. Удачи в Вашем поиске.   -  person shellter    schedule 16.12.2011
comment
Для этой стены с текстом нужен TL; DR.   -  person SiegeX    schedule 02.01.2012


Ответы (1)


Раньше я обнаружил, что точное изображение было намного быстрее.

http://www.exactcode.de/site/open_source/exactimage/

Марк Тайлер (оригинальный автор mtPaint) однажды выделил отличные части обработки графики в отдельную библиотеку (mtpixel ... с тех пор заброшен как отдельный проект, но включен в mtcelledit @ его главная страница кода Google)

person technosaurus    schedule 16.02.2012