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 に答える