0

我正在使用 im4Java 库来调整我的图像大小。我看到您可以设置一个模板操作,其中包含输入和输出文件的占位符。我知道您最初可以为操作设置调整大小,但是可以设置调整大小也是动态的操作吗?

这是我当前的代码:

   IMOperation op = new IMOperation();
   op.addImage();
   op.resize(500, 500); // I would like to make this dynamic
   op.quality(70d);
   op.addImage();
4

1 回答 1

0

您可以实现 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;
    }
}
于 2012-11-25T18:51:55.907 回答