I는 Serializable를 구현하고 비트 맵이 포함되어 있기 때문에 내가의 writeObject와 readObject에 해당 클래스에 대한 쓴 클래스의 터치 포인트가 있습니다decodeByteArray 및 copyPixelsToBuffer가 작동하지 않습니다. SkImageDecoder :: 공장 반환 널
private void writeObject(ObjectOutputStream oos) throws IOException {
long t1 = System.currentTimeMillis();
oos.defaultWriteObject();
if(_bmp!=null){
int bytes = _bmp.getWidth()*_bmp.getHeight()*4;
ByteBuffer buffer = ByteBuffer.allocate(bytes);
_bmp.copyPixelsToBuffer(buffer);
byte[] array = buffer.array();
oos.writeObject(array);
}
Log.v("PaintFX","Elapsed Time: "+(System.currentTimeMillis()-t1));
}
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException{
ois.defaultReadObject();
byte[] data = (byte[]) ois.readObject();
if(data != null && data.length > 0){
_bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
}
}
문제는 내가
SkImageDecoder을 얻을입니다 :: 공장 반환 null
어떻게 해결할 수 있습니까? 나는 가능한 솔루션
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
_bmp.compress(Bitmap.CompressFormat.PNG, 100, byteStream);
oos.writeObject(byteStream.toByteArray);
에()의 writeObject를 변경하는 것을 알고하지만이 방법은 속도가 느린 거의 10 + 배이다. 이미지를
UPDATE를 작성하기위한
- copyPixelsToBuffer ~ 14ms가 은 찾아 실제 문제가 있음을 그
buffer.array();
모든 바이트 후 [] 배열 요소는 다음과 같습니다. 0
다른 오류 메시지가 표시되지 않습니까? 아마도'int bytes = _bmp.getRowBytes() * _bmp.getHeight()'가 문제를 해결할 것입니다. –
아니요, 다른 메시지가 표시되지 않습니다. 그것은 문제를 해결하지 못합니다. 그러나, 나는 이것을 해결하는 방법을 찾는다. 나는 나중에 대답을 게시 할 것이다. – Cyberon