2013-04-18 3 views
0

Я хочу, чтобы сделать снимок из моего приложения с помощьюсвойства камеры Изменение по умолчанию

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(camera, TAKE_PICTURE); 

и отправить его на веб-сервер. Но так как веб-сервер сжимает его в 150x150 изображение из размер не более 50 кб, мне не нужно, чтобы занять некоторое 3264x2448 изображение из размера ~ 2 мб потому что он принимает ад много времени, чтобы отправить перевод. Я хочу взять изображение минимального размера.

Итак, есть ли способ спросить камеру для изображения определенного размера?

Я попробовал его с помощью API камеры и изменений его свойств:

private Camera mCamera; 

Camera.Size pictureSize = getSmallestPictureSize(mCamera 
       .getParameters()); 
     if (pictureSize != null) { 
      mCamera.getParameters().setPictureSize(pictureSize.width, 
        pictureSize.height); 
     } 

private Camera.Size getSmallestPictureSize(Camera.Parameters parameters) { 
     Camera.Size result = null; 

     for (Camera.Size size : parameters.getSupportedPictureSizes()) { 
      if (result == null) { 
       result = size; 
      } else { 
       int resultArea = result.width * result.height; 
       int newArea = size.width * size.height; 

       if (newArea < resultArea) { 
        result = size; 
       } 
      } 
     } 

     return (result); 
} 

Проблемы в том, я до сих пор получить увеличенные изображения. Но это не Актуальная проблема:

, когда я использую предварительный просмотр для этого его, как это

enter image description here

Не позволяет пользователю вращать предварительный просмотр, увеличение/уменьшение и т.д ..

Есть ли способ использовать фактический просмотр камеры с пользовательскими параметрами?

ответ

0

Некоторые камеры начинают снимать изображение в ландшафтном режиме в режиме portait. Это можно исправить на уровне sdk, это будет немного дорогостоящим во время выполнения, для процессора, но может быть сделано.

Вам нужен меньший размер:

-при уровень реализации SDK трубопровода, в котором будет сжиматься захваченное изображение до 10-15% от исходного, он разряжает батарею, но может быть сделано. - на уровне ndk вам нужно реализовать собственный драйвер для каждой поддерживаемой камеры ... для этого пользовательского драйвера вы также внесете специальное программное обеспечение, и все будет в порядке.

+0

в соответствии с [это] (https://github.com/commonsguy/cw-advandroid/blob/master/Camera/Picture/AndroidManifest.xml) демо-версия сообщества. В манифесте ориентация установлена ​​на альбомную. Таким образом, это ограничит пользователя отображать изображения только в ландшафтном режиме, если они будут снимать изображение в портретном режиме, они могут получить 90-градусное повернутое изображение. Итак, есть ли способ разрешить пользователю изменять предварительный просмотр камеры, как ему нравится –

+0

согласно документации Java является независимой от платформы, а Android не зависит от платформы, но на практике это не так. Согласно моему контракту с клиентом/боссом, мне нужно создать программное обеспечение, которое работает хорошо, без каких-либо ошибок. Видео/аудио материал (очень) зависит от платформы/устройства: протестирован и работает на 8 устройствах, но следующие 2 нет. Миф о платформе независим и в соответствии с документацией ... – 2013-04-18 12:14:02

Смежные вопросы