im4java и imagemagick - почему не работает параметр гравитации?

Я пытаюсь изменить размер изображения с помощью Image Magick через библиотеку IM4Java.

Это работает хорошо, за исключением того, что изображение не по центру. Я выполнил эти же команды через внешнюю командную строку, и они хорошо работают.

Может кто-нибудь сказать мне, почему это не работает?

private void convertImage(int width, int height, String source, String dest)
        throws IOException, IM4JavaException, InterruptedException
{
    // create command
    ConvertCmd cmd = new ConvertCmd();

    // create the operation, add images and operators/options
    IMOperation op = new IMOperation();
    op.addImage(source);

    op.thumbnail(width, height, ">");
    op.extent(width, height);
    op.gravity("center");
    op.background("white");

    op.addImage(dest);
    ProcessStarter.setGlobalSearchPath("/usr/local/bin");
    cmd.setOutputConsumer(imageMagickOutputter);
    cmd.run(op);

}

Результат выполнения команды с фоновым переключением на синий

1 ответ

Решение

Порядок операций имеет значение: поместите гравитационную операцию перед миниатюрой и экстентом:

        IMOperation op = new IMOperation();
        op.addImage(sourceFile);
        op.gravity("center");
        op.thumbnail(width, height, '^');
        op.extent(width,height);
        op.addImage(destinationFile);
Другие вопросы по тегам