안녕하세요.

C++로 처리한 이미지를 byte로 받아와서 jpg로 저장하기 위해 Bitmap compress를 하는데요.

640*480, 800*480은 아무 문제없이 저장이 잘 됩니다.


그런데, 1600*1200는 compress에서 NullPointerException이 발생하고

-1*-1로 저장됩니다.


1600*1200을 BitmapFactory.decodeFile하는 것은 문제가 없고 compress에서만 에러가 납니다.


카메라가 더 훨씬 큰 이미지를 저장하는 것을 보면 왠지 될 것도 같은데요.

메모리를 어떻게 해야 하는건지, 다른 어떤 방법이 있는건지,

해결방법을 정말 알고 싶습니다.


갤럭시S에서 테스트하고 있습니다.


byte[] imageData = opencv.getImage(trans_x*image_scale, trans_y*image_scale, angle);
opencv.Release();
               
Bitmap bitmap_temp = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
imageData = null;

OutputStream outstream = contentResolver.openOutputStream(mSavedFileUri);        
try{
     bitmap_temp.compress(Bitmap.CompressFormat.JPEG, image_quality, outstream);
} catch (NullPointerException e) {
     Toast.makeText(this, e.getMessage()+" NullPointerException", 0).show();
}
outstream.close();
bitmap_temp.recycle();
bitmap_temp = null;