Код ниже выполнен в виде обратного вызова jpeg-изображения после вызова TakePicture. Если я сохраню данные на диске, это 1280x960 jpeg. Я попытался изменить размер изображения, но это невозможно, так как не поддерживается меньший размер. JPEG - единственный доступный формат изображения.Лучший способ масштабирования размера изображения камеры перед сохранением на SD
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream out = null;
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap sbm = Bitmap.createScaledBitmap(bm, 640, 480, false);
data.Length примерно 500k, как и ожидалось. После выполнения BitmapFactory.decodeByteArray(), bm имеет высоту и ширину -1, поэтому кажется, что операция не работает.
- Мне непонятно, может ли Bitmap обрабатывать данные jpeg. Я бы не подумал, но у меня есть некоторые примеры кода, которые, похоже, указывают на это.
- Должны ли данные быть в растровом формате перед декодированием и масштабированием?
- Если да, то как это сделать?
Спасибо!