ビットマップをシリアル化/逆シリアル化しようとしています。 android how to save a bitmap - buggy codeの回答は非常に役に立ちます。しかし、私は私の配列読み取りに行くとき:ObjectInputStream.read(byte []、int、int)データがありませんか?
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException {
int rowBytes = in.readInt();
int height = in.readInt();
int width = in.readInt();
int bmSize = rowBytes * height; // Ends up being 398208
ByteBuffer byteBuffer = ByteBuffer.allocate(bmSize);
int bytesRead = in.read(byteBuffer.array(), 0, bmSize);
// Use array to create bitmap here
}
それが1008バイトではなく、私が書いた398208のバイトを読んでいるし。間違って行くことができるもの
for (int i = 0; i < bmSize; i++) {
byteBuffer.array()[i] = in.readByte();
}
:私は正常に動作ループとの通話を、交換してきましたか?例外はスローされません。 ObjectInputStream.read(byte[], int, int)のドキュメントでは、ストリームの最後にヒットした場合に早期に返さなければならない唯一の理由が示されています。これは、私の回避策が例外をスローしないためではありません。
すべてのデータを一度に読み取る必要がない場合は、ループを使用していません。 – Sameer
ループはうまくいきます。組み込みメソッドが機能しなかった理由を知りたいだけでした。また、適切な方法が高速になると思われます。ネイティブコールなどを使用できる可能性があります。 – Brad