ファイルによる画像データ授受 #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(); } }
わざわざこちらでファイルストリームを開く必要がなくなったため、
画像オブジェクトの生成まわりがすっきりする。