PNGからバイトを抽出しようとしていますが、奇妙な結果が得られています。
これが私のextractbyteメソッドです:
public static byte[] extractBytes (String ImageName) throws IOException {
// open image
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
// get DataBufferBytes from Raster
WritableRaster raster = bufferedImage.getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
return ( data.getData() );
}
そして、ここで関数を呼び出し、結果のbyte[]をループします。
byte[] bytes = extractBytes("colorstrip.png");
for (int x : bytes) {
System.out.println(x);
}
私はこのコードを、赤のピクセル、青のピクセル、緑のピクセル、紫のピクセルの順に含む4x1の画像でテストしてきました。出力は次のとおりです。
-1
0
0
-1
-1
0
-1
0
-1
-1
0
0
-1
-1
0
-1
この出力は私には正しく見えません。出力は次のようになるはずです(アルファチャンネルは空白のままにしました):
255
0
0
0
255
0
0
0
255
255
0
255
問題が何であるかについて何か考えはありますか?