2012-05-28 1 views
2

В моем приложении я снимаю фото с камеры android, а затем хочу отправить его на сервер. Для этого я использую программирование клиентского сокета. Я конвертирую фото захвата в bytearray (byte []), а затем отправляю его на сервер. Все работает нормально.Android: не удалось получить оригинальную фотографию, снятую камерой (возможность читать только фотографию с компрессией)

Проблема в том, что я не могу отправить оригинал фотографии на сервер. Миниатюра фото отправляется мобильным телефоном android. Но когда я фотографирую камеру, тогда оригинальная фотография находится в Галерее.

Как получить эту оригинальную фотографию для использования в моей заявке?

Мой код:

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG); 
     cameraIntent.putExtra("return-data", true); 
    startActivityForResult(Intent.createChooser(cameraIntent, "Select Picture"), 
        CAMERA_REQUEST); 

И в методе onActivityResult:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == CAMERA_REQUEST) { 
     Bitmap photo = (Bitmap) data.getExtras().get("data"); 
//   byte[] a = (byte[]) data.getExtras().getByteArray("data"); // I also use this but not work 


     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     photo.compress(CompressFormat.JPEG, 100, bos); 
     byte[] bitmapdata = bos.toByteArray(); 


    } 
} 

в BitmapData фото есть, но сжатые фото не оригинал. Некоторые люди говорят, что смените поле качества компресс (CompressFormat.JPEG, 100, bos); между 0 и 100, но ничего не произойдет.

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

- >> Когда Фотография находится в папке моего компьютера, то я прочитал эту фотографию в файле, указав путь. ex- Файл файла = новый файл (c: \ newphoto \ image.jpg);. могу ли я использовать этот код в android для чтения оригинальной фотографии, потому что я знаю название и местоположение фотографии. Если да, то каков путь к чтению фотографии в галерее. Является ли эта работа, если я укажу путь как: \ DCIM \ Camera \ photoName.jpg.

- >> Или некоторые изменения необходимы в моем текущем коде, и он будет работать нормально?

ответ

6

Вы используете намерение для захвата изображения с помощью ACTION_IMAGE_CAPTURE. Если вы обычно запускаете свою камеру с помощью Intent, тогда она будет возвращать изображение в виде растрового изображения в onActivityResult(), но оно будет предназначено для создания эскизов.

Если вы хотите получить изображение с полным разрешением с камеры, вы должны предоставить файл с намерением, который вы стреляете, чтобы начать работу с камерой.

Вы можете сделать, как показано ниже

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
File out = Environment.getExternalStorageDirectory(); 
out = new File(out, imagename); 
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out)); 
startActivityForResult(i, CAMERA_RESULT); 

Здесь есть MediaStore.EXTRA_OUTPUT параметр, который принимает Uri файла, в котором вы хотите, чтобы ваша камера написать изображения.

Для получения дополнительной информации вы можете обратиться ниже примере

Capture full resolution image from camera

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