2015-06-02 3 views
-1

HI я использовал следующие намерения камеры устройства для захвата и сохранения изображения в памяти устройства:изображений в передней и заднего устройство захвата камеры фото умысла

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE,lastChar); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
     // Start the image capture Intent 
     startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE); 

Everthing просто работает отлично, камера захватив изображение, сохраняя его в хранилище правильно, но когда я пытаюсь просмотреть изображение, извлекая изображение uri из хранилища и отображая его в изображении. Угол изображения меняется постоянно. для заднего угла захвата захваченного изображения камеры составляет 90 градусов, а угол поворота передней камеры - 270 градусов.

Я добавил поворот на 90 градусов для всех изображений, что устраняет проблему с задней камерой, но передняя камера с захваченным изображением по-прежнему имеет поворот на 180 градусов.

заранее спасибо, пожалуйста, помогите мне разобраться этот вопрос

ответ

3

Некоторые камеры будут фактически сохранять JPEG изображения в собственном вращении; другие установят заголовок EXIF, чтобы зритель изображения мог поворачивать изображение. ImageView не поддерживает заголовки EXIF ​​в файлах JPEG. Вам нужно будет использовать ExifInterface (или аналогичные методы), чтобы увидеть, есть ли заголовок ориентации EXIF ​​и настроить изображение в соответствии с требованиями.

+0

спасибо за ExifInterface намека –

1

я использовал код ниже, чтобы проверить ориентацию и изменил свое вращение ImageView к этому углу

ExifInterface exif; 
     try { 
      exif = new ExifInterface(filePath); 

      int orientation = exif.getAttributeInt(
        ExifInterface.TAG_ORIENTATION, 0); 
      Log.d("EXIF", "Exif: " + orientation); 
      Matrix matrix = new Matrix(); 
      if (orientation == 6) { 
       matrix.postRotate(90); 
       Log.d("EXIF", "Exif: " + orientation); 
      } else if (orientation == 3) { 
       matrix.postRotate(180); 
       Log.d("EXIF", "Exif: " + orientation); 
      } else if (orientation == 8) { 
       matrix.postRotate(270); 
       Log.d("EXIF", "Exif: " + orientation); 
      }