0

我有一段看似非常简单的代码,但我终其一生都无法弄清楚为什么它不起作用。

我有一个方法可以监听来自相机的图像更新,当它接收到它们时,它会调用另一段代码。

我的听众是:

public void imageUpdated(BufferedImage image) {
    if (null != video) {   
        video.setImage(image);
    }
    File outputfile = new File("savedingui.jpg");
    try {
        ImageIO.write(image, "jpg", outputfile);
    } catch (IOException e) {
        e.printStackTrace();
    }

这很高兴将正确的图像保存到光盘。但是,当我从 setImage 方法(在侦听器代码的第 3 行调用)再次保存图像时

public void setImage(BufferedImage image) {
    File outputfile = new File("savedorig.jpg");
    try {
        ImageIO.write(image, "jpg", outputfile);
    } catch (IOException e) {
        e.printStackTrace();
    }

它现在只保存黑色的 jpeg。但是大小合适的黑色方块。

关于发生了什么的任何线索?

4

1 回答 1

1

我无法使用以下来源重现您的问题(基本上是从您的问题中复制的):

public static void imageUpdated(BufferedImage image) {
    setImage(image);

    File outputfile = new File("savedingui.jpg");
    try {
        ImageIO.write(image, "jpg", outputfile);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static void setImage(BufferedImage image) {
    File outputfile = new File("savedorig.jpg");
    try {
        ImageIO.write(image, "jpg", outputfile);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) throws IOException {
    BufferedImage image = ImageIO.read(new File("test.jpg"));
    imageUpdated(image);
}

是否在其他地方使用了相同的实例,例如在其中写入更新数据的相机?

于 2013-07-30T16:13:36.687 回答