ファイルによる画像データ授受 #4

元々のプログラムにおける画像データの受け渡しが標準入出力経由だったことから、
画像データから画像オブジェクトを生成するのにImageIO#read(InputStream)を使っていた。
しかし今のコードではFileオブジェクトがあるのだからImageIO#read(File)でもよかった。

import java.io.*;
import javax.imageio.ImageIO;

public class GnuplotUser6 {
    private static final String GNUPLOT = "/usr/bin/gnuplot";

    public static void main(String[] args) throws IOException, InterruptedException {
        Process p = new ProcessBuilder(GNUPLOT, "-").start();
        try (PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(p.getOutputStream())))) {
            File file = File.createTempFile("gpu", ".png");
            out.println("set terminal png");
            out.println("set output \"" + file.getCanonicalPath() +"\"");
            out.println("plot sin(x)");
            out.println("set output");
            out.flush();
            System.err.println(ImageIO.read(file));
            file.delete();
        }
        p.waitFor();
    }
}

わざわざこちらでファイルストリームを開く必要がなくなったため、
画像オブジェクトの生成まわりがすっきりする。