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);