У меня мало вопросов по обработке больших растровых изображений, я не смог найти ответ по тем, которые я нашел, где эта проблема обсуждалась до сих пор.Приложение для Android-камеры - Большая обработка растровых изображений
У меня есть Nexus S, который, когда я беру изображение с классом hardware.Camera, как это:
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 падает. Итак, я подумал, что если это произойдет, то как это сделать в приложении для камеры 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-камеры?
Спасибо!
Что было причиной аварии? Предоставьте starttrace/logcat. И исходная ссылка кажется неправильной. Нет метода makeBItmap() с этой сигнатурой –