画像のバイトを含むJavaのbyte []配列が与えられ、それを画像に出力する必要があります。これをどうやってやるの?
どうもありがとう
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
画像の種類がわかっていて、ファイルのみを生成する場合は、BufferedImageインスタンスを取得する必要はありません。バイトを正しい拡張子でファイルに書き込むだけです。
OutputStream out = null;
try {
out = new BufferedOutputStream(new FileOutputStream(path));
out.write(bytes);
} finally {
if (out != null) out.close();
}
From Database.
Blob blob = resultSet.getBlob("pictureBlob");
byte [] data = blob.getBytes( 1, ( int ) blob.length() );
BufferedImage img = null;
try {
img = ImageIO.read(new ByteArrayInputStream(data));
} catch (IOException e) {
e.printStackTrace();
}
drawPicture(img); // void drawPicture(Image img);
Byte []配列の形式(RGB、ARGB、BGRなど)を既に知っているように聞こえるので、 BufferedImage.setRGB(...) または BufferedImage.getRaster() と WritableRaster.setPixels(...) または WritableRaster.setSamples(...) の組み合わせ。残念ながら、これらのメソッドは両方とも、byte []をイメージ形式に応じてint []、float []、またはdouble []のいずれかに変換する必要があります。
Java docs、によれば、 MemoryImageSourceクラス を使用してバイト配列をメモリ内のオブジェクトに配置し、次にComponent.createImage( ImageProducer)次に(ImageProducerを実装するMemoryImageSourceを渡します)。