そのため、バイト配列から画像を作成しようとしましたが、ImageIO.read()メソッドが例外なくnullポインターを返す理由を理解できません。
@Override
public int setParam(byte[] buffer) {
mFlag = buffer[0]; //TODO
mX = Convertor.convert2BytesToInt(buffer[1], buffer[2]);
mY = Convertor.convert2BytesToInt(buffer[3], buffer[4]);
mWidth = Convertor.convert2BytesToInt(buffer[5], buffer[6]);
mHeight = Convertor.convert2BytesToInt(buffer[7], buffer[8]);
mLength = Convertor.convert4BytesToInt(buffer[9], buffer[10], buffer[11], buffer[12]);
byte[] bufferpix = Arrays.copyOfRange(buffer, 13, 13+mLength);
ByteArrayInputStream in = new ByteArrayInputStream(bufferpix);
try {
mImage = ImageIO.read(in);
} catch (IOException e) {
e.printStackTrace();
}
return 13+mLength;
}
@Override
public void draw(Graphics2D g, ArrayList<Color> palette) {
System.out.print("Draw Image\n");
g.drawImage(mImage, mX, mY, mWidth, mHeight, null);
}
バッファは問題ないようです。データRGBAが含まれています(各1バイト、つまりピクセルあたり4バイト)。その使用法に問題がありますか?どうも
ところで、不思議に思うかもしれませんが、このバッファは以前にAndroidクラスのビットマップによって作成されています。