あなたはこれを達成するためにPipedInputStream
/PipedOutputStream
を使用することができます。
Image image = ...
BufferedImage bImage = SwingFXUtils.fromFXImage(image, null);
PipedOutputStream pos;
try (PipedInputStream pis = new PipedInputStream()) {
pos = new PipedOutputStream(pis);
new Thread(() -> {
try {
ImageIO.write(bImage, "png", pos);
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
}).start();
workbook.addPicture(pis, Workbook.PICTURE_TYPE_PNG);
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
か、ByteArrayOutputStream
を使用してアレイにデータを書き込むことができます:
Image image = ...
BufferedImage bImage = SwingFXUtils.fromFXImage(image, null);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ImageIO.write(bImage, "png", bos);
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
workbook.addPicture(bos.toByteArray(), Workbook.PICTURE_TYPE_PNG);
の代わりImageIO.writeを経由してファイルへの書き込みを()ByteArrayOutputStreamに書き込むこともできます。次に、addPicture(新しいByteArrayInputStream(ByteArrayOutputStreamのバイト))を介して画像をブックに追加することができます – kiwiwings