web-dev-qa-db-ja.com

画像配列へのバイト配列

画像のバイトを含むJavaのbyte []配列が与えられ、それを画像に出力する必要があります。これをどうやってやるの?

どうもありがとう

BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
86
Nick Veys

画像の種類がわかっていて、ファイルのみを生成する場合は、BufferedImageインスタンスを取得する必要はありません。バイトを正しい拡張子でファイルに書き込むだけです。

OutputStream out = null;

try {
    out = new BufferedOutputStream(new FileOutputStream(path));
    out.write(bytes);
} finally {
    if (out != null) out.close();
}
23
Sam Barnum
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);
3
Usman

Byte []配列の形式(RGB、ARGB、BGRなど)を既に知っているように聞こえるので、 BufferedImage.setRGB(...) または BufferedImage.getRaster()WritableRaster.setPixels(...) または WritableRaster.setSamples(...) の組み合わせ。残念ながら、これらのメソッドは両方とも、byte []をイメージ形式に応じてint []、float []、またはdouble []のいずれかに変換する必要があります。

2
Kevin Loney

Java docs、によれば、 MemoryImageSourceクラス を使用してバイト配列をメモリ内のオブジェクトに配置し、次にComponent.createImage( ImageProducer)次に(ImageProducerを実装するMemoryImageSourceを渡します)。

1
Platinum Azure