使用Marvin调整图片大小

3

我在Java中使用Marvin图像处理框架,但我无法缩放图像。它只显示为一个黑色正方形,请问我哪里出错了?设定的阈值是有效的。

package com.example.marvin;

import marvin.image.MarvinImage;
import marvin.io.MarvinImageIO;
import marvin.plugin.MarvinImagePlugin;
import marvin.util.MarvinPluginLoader;

public class Imageprocess {

    public static void main (String[] args) {

        MarvinImage image = MarvinImageIO
                .loadImage("/Users/unknown1/Desktop/images.jpeg");

        MarvinImagePlugin thresholdplugin = MarvinPluginLoader
                .loadImagePlugin("org.marvinproject.image.color.thresholding.jar");

        MarvinImagePlugin scaleplugin = MarvinPluginLoader
                .loadImagePlugin("org.marvinproject.image.transform.scale.jar");

        thresholdplugin.setAttribute("threshold", 85);
        thresholdplugin.process(image, image);


        scaleplugin.setAttribute("newWidth", 50);
        scaleplugin.setAttribute("newHeight", 37);
        scaleplugin.process(image, image);

        image.update();

        MarvinImageIO.saveImage(image, "/Users/unknown1/Desktop/images1.jpeg");
    }

}
2个回答

1

它使用最新版本的Marvin运行!

import marvin.image.MarvinImage;
import marvin.io.MarvinImageIO;

import static marvin.MarvinPluginCollection.*;

public class Imageprocess {

    public static void main (String[] args) {
        MarvinImage image = MarvinImageIO.loadImage("./res/chamaleon.jpg");
        thresholding(image, 85);
        scale(image.clone(), image, 50, 37);
        MarvinImageIO.saveImage(image, "./res/chamaleon_scaled.jpg");
    }
}

1

每次处理后,你需要执行 image.update();

然后你会得到以下代码:

    ...
    thresholdplugin.setAttribute("threshold", 85);
    thresholdplugin.process(image, image);

    image.update();

    scaleplugin.setAttribute("newWidth", 50);
    scaleplugin.setAttribute("newHeight", 37);
    scaleplugin.process(image, image);

    image.update();
    ...

当然,最好使用插件的最新版本。


1
嘿@SergeyZh,欢迎来到SO。虽然我们非常欢迎对旧问题的新回答,但作为新贡献者,我认为你应该被提示检查你回答的问题日期,以确保你已经注意到这个问题是6年前的。 - Software Engineer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接