ImageMagick и Grails не работают - PullRequest
2 голосов
/ 04 июня 2010

Я пытаюсь запустить ImageMagick из Grails для преобразования некоторых изображений, когда я запускаю команду, чтобы сделать изображение, ничего не происходит. Я не получаю ошибок, никакая информация ничего не возвращает вообще. Я попытался запустить другие команды, такие как touch и ps ux, просто чтобы посмотреть, работают ли они, и все они работают нормально. Просто кажется, что команды imagemagick теряются, и я не уверен, что делать. Вот код, с которым я работал.

String command = CH.config.ImageMagickPath + "/convert -size 40x20 xc:red  xc:blue -append -rotate 90 append_rotate.gif"
println command
command.execute()

CH.config.ImageMagickPath устанавливается там, где находится imagemagick / bin. Я взял то, что показано в
команда println
и запустить его в терминале, и он работает нормально. Есть ли причина, по которой я не могу заставить IM работать на Grails?


Хорошо, я использовал Java для кодирования, и теперь я получаю эту ошибку:

dyld: библиотека не загружена: /ImageMagick-6.6.1/lib/libMagickCore.3.dylib Ссылка на: / Library / ImageMagick / bin / convert Причина: изображение не найдено

Ответы [ 2 ]

1 голос
/ 06 июня 2010

Я только что сделал нечто похожее:

def convert = ["/usr/bin/convert","/opt/local/bin/convert"].find( { new File(it as String).exists() })
File thumbnail = new File(f.getParentFile(),FilenameUtils.getBaseName(f.getName()) + ".thumbnail.png")
ProcessBuilder pb = new ProcessBuilder()
        .command(convert, f.getName(), "-thumbnail", "128x128>","-bordercolor","snow","-background","black", "-polaroid", "0", thumbnail.getName())
        .directory(f.getParentFile());

int result = pb.start().waitFor()

if( result != 0 ){
  throw new ImageMagickException("thumbnail generation failured, return code:" + result);
}

Это немного более многословно (java - способ укорениться в моей голове), но это работает.

Обратите внимание, что String.execute возвращает объект процесса, вам нужно вызвать waitFor(), прежде чем проверять наличие сгенерированных файлов или нет. Также убедитесь, что вы проверили код возврата, чтобы узнать, как это пошло не так.

0 голосов
/ 04 июня 2010

Я бы предложил использовать JMagick , который является JNI-оболочкой для библиотеки imagemagick. Это также будет более эффективным, чем вызов execute ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...