大きなビットマップを扱うことに関する質問はほとんどありません。この問題についてこれまで説明したトピックでは答えが見つかりませんでした。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);
}
}
};
画像は、decodeByteArrayクラッシュの時点でのアプリケーション5MPixelsであることに注意して有します。 だから私は、このクラッシュ場合、どのようにAndroidのカメラアプリで行われると思った。
私は、ソースとそこに私はそこ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の問題が発生します。
大きなビットマップを使用したい場合は大きなサイズで、アルファレイヤのあるPNGを約500x300のサイズで使用したいのですが、どうすればいいですか? Android Cameraアプリでの大きな画像の作成は、実際どのように行われていますか?
ありがとうございます!
クラッシュ原因は何ですか? starttrace/logcatを指定してください。あなたのソースリンクは間違っているようです - その署名を持つmakeBItmap()メソッドはありません –