0

byte[]Javaでラスター画像から取得するにはどうすればよいですか?私が試してみました:

byte[] data = ((DataBufferByte)bufferedImage.getData().getDataBuffer()).getData();

ClassCastExceptionただし、これにより実行時例外がスローされます: 「DataBufferIntをDataBufferByteにキャストできません」。

助けてくれてありがとう。

4

1 に答える 1

2

次のような ByteArrayOutputStream を使用してバイト配列を取得できます: (注、テストされていないコード)

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( bufferedImage, "jpg", baos ); // if your image is a jpg
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();

編集 これはどうですか?画像を読み取って ByteArrayOutputStream に書き込むには、画像の FileInputstream が必要です。

ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
    for (int readNum; (readNum = fis.read(buf)) != -1;) {
        bos.write(buf, 0, readNum); 
    }
} catch (IOException ex) {
    //
}
byte[] bytes = bos.toByteArray();
于 2012-08-21T06:56:27.130 に答える