im4Java - Динамическая операция для изменения размера
Я использую библиотеку im4Java для изменения размера моих изображений. Я вижу, вы можете настроить шаблонную операцию, которая имеет заполнитель для входных и выходных файлов. Я знаю, что вы можете изначально установить размеры для операции, но можно ли настроить операцию, чтобы размеры были также динамическими?
Это мой текущий код:
IMOperation op = new IMOperation();
op.addImage();
op.resize(500, 500); // I would like to make this dynamic
op.quality(70d);
op.addImage();
1 ответ
Вы можете реализовать интерфейс DynamicOperation и добавить его в свой стек операций.
Пример использования:
Необходимо изменить размер данного изображения для всех других размеров изображения в наборе размеров изображения.
например:
Set1: [16x16, 32x32, 64x64],
Set2: [12x12, 24x24, 48x48].
Если входное изображение имеет размер 32x32, его необходимо изменить до 16x16, 64x64.
Код:
...
DynamicResizeOperation drOp = new DynamicResizeOperation();
IMOperation op = new IMOperation();
op.addImage(inputImagePath);
op.addDynamicOperation(drOp);
op.addImage(); //place holder for out put image
...
for (IMSize imSize : resizeList) {
//set the dynamic size to resize
drOp.setSize(imSize.getWidth(), imSize.getHeight());
...
class DynamicResizeOperation implements DynamicOperation {
private int height;
private int width;
public DynamicResizeOperation() {}
public void setSize(int width, int height) {
this.height = height;
this.width = width;
}
@Override
public Operation resolveOperation(Object... pImages) throws IM4JavaException {
//return the resize operation if and only if both height and width are non zero positive values
if (height > 0 && width > 0) {
IMOperation op = new IMOperation();
op.resize(width, height, "!");
return op;
}
return null;
}
}