큰 비트 맵 처리에 관해 몇 가지 질문이 있습니다.이 문제에 대해 지금까지 논의 된 주제에서 답변을 찾을 수 없었습니다.Android 카메라 애플리케이션 - 대형 비트 맵 처리
은 내가 이런 식으로 hardware.Camera 클래스와 이미지를 걸릴 넥서스 S가 :
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
if (imageData != null) {
BitmapFactory.decodeByteArray(imageData, 0, imageData.length, options);
}
}
};
이미지가 5MPixels를 있다는 사실을 갖는, decodeByteArray의 시점에서 응용 프로그램이 충돌합니다. 그래서 생각, 만약이 충돌 다음 안드로이드의 카메라 애플 리케이션에서 어떻게 이루어집니다.
나는 소스를 다운로드하고이 나는 makeBitmap 방법이 발견 http://www.java2s.com/Open-Source/Android/android-platform-apps/Gallery/com/android/camera/Util.java.htm그래서 내가 makeBitmap를 이용할 수 있도록 콜백을 변경 :
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
if (imageData != null) {
Bitmap bitmap = Utils.makeBitmap(imageData, 50 * 1024);
}
}
};
그래서 내가 그 방법을 가져다가 내 응용 프로그램에 사용됩니다. 이 방법으로 만든 이미지는 품질이 낮을뿐만 아니라 픽셀 수 (50 * 1024)를 더 크게 만들면 다른 OutOfMemory 문제가 발생합니다.
내 질문에 큰 비트 맵을 사용하고 크기가 500x300 크기의 알파 레이어가있는 PNG를 의미하는 경우 어떻게해야합니까? Android Camera 앱에서 큰 이미지를 실제로 만드는 방법은 무엇입니까?
감사합니다.
충돌 원인은 무엇입니까? starttrace/logcat을 제공하십시오. 그리고 소스 링크가 틀린 것 같습니다. - 해당 서명이있는 makeBItmap() 메소드가 없습니다. –