7

int readFully(FileHandle handle, OutputStream out)SSH サーバーからファイル全体を読み取り、それをローカル ストリームに格納する関数があります。FileOutputStream2 番目のパラメーターにa を使用してファイルをローカルに書き込み、次のBufferedImageようなものを使用してそのファイルを に読み込むことができます。

bufferedImage = ImageIO.read(new File("/path/to/file"));

しかし、最初にファイルに書き込まずに bufferedImage を直接作成するにはどうすればよいですか? この質問を見ましたが、私の場合はまだわかりません。

4

3 に答える 3

13

ByteArrayOutputStream代わりに a に書き込むだけです。ByteArrayInputStream同じバイト配列から読み取る a を作成し、それを に渡すことができImageIO.read(InputStream)ます。

ByteArrayOutputStream output = new ByteArrayOutputStream();
readFully(handle, output);
byte[] data = output.toByteArray();
ByteArrayInputStream input = new ByteArrayInputStream(data);
BufferedImage image = ImageIO.read(input);

これは、実際にInputStreamは から直接 を作成できないことを前提としていますFileHandle。これはさらに簡単です。

于 2013-07-03T15:34:41.873 に答える