La foto gira 90 grados mientras captura en algunos teléfonos
La foto está girando 90 grados mientras que la captura de la cámara en samsung resto móvil de otros móviles está trabajando bien. Por favor ayudame para esto.
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, IMAGE_CAPTURE); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); try { if (requestCode == IMAGE_CAPTURE) { if (resultCode == RESULT_OK){ Uri contentUri = data.getData(); if(contentUri!=null) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(contentUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); imageUri = Uri.parse(cursor.getString(column_index)); } tempBitmap = (Bitmap) data.getExtras().get("data"); mainImageView.setImageBitmap(tempBitmap); isCaptureFromCamera = true; } }
- En Android, ¿es posible cambiar la cámara (de adelante hacia atrás) y seguir grabando?
- Android captura la foto putExtra (MediaStore.EXTRA_OUTPUT, Uri.fromFile (photoFile)); los datos son nulos
- Tome y guarde la imagen presionando el botón
- Uso de camera2 contra cámara obsoleta - ¿cuál es la mejor práctica?
- Android AutoFocusCallback no se está llamando o no está volviendo
- Rotación inexplicable de la cámara Android en la captura de algunos dispositivos (no en EXIF)
- Android - Vista preliminar de la cámara
- Graba, guarda y reproduce un video en Android
- Tomar una foto con android ndk - camera api
- ¿Cuál es la forma correcta de implementar Toque para enfocar para la cámara?
- ¿Es posible recortar la vista previa de la cámara?
- Transmisión de vídeo en directo desde la cámara de Android al servidor
- ¿Dónde está la resolución de vídeo almacenada en android?
Esto pasa a ser un error en versiones anteriores de Android.
He resuelto este problema sólo obtener el ángulo de orientación y girar el mapa de bits en consecuencia.
public Bitmap decodeFile(String path) {//you can provide file path here int orientation; try { if (path == null) { return null; } // decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; // Find the correct scale value. It should be the power of 2. final int REQUIRED_SIZE = 70; int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 0; while (true) { if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) break; width_tmp /= 2; height_tmp /= 2; scale++; } // decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap bm = BitmapFactory.decodeFile(path, o2); Bitmap bitmap = bm; ExifInterface exif = new ExifInterface(path); orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1); Log.e("ExifInteface .........", "rotation ="+orientation); //exif.setAttribute(ExifInterface.ORIENTATION_ROTATE_90, 90); Log.e("orientation", "" + orientation); Matrix m = new Matrix(); if ((orientation == ExifInterface.ORIENTATION_ROTATE_180)) { m.postRotate(180); //m.postScale((float) bm.getWidth(), (float) bm.getHeight()); // if(m.preRotate(90)){ Log.e("in orientation", "" + orientation); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),bm.getHeight(), m, true); return bitmap; } else if (orientation == ExifInterface.ORIENTATION_ROTATE_90) { m.postRotate(90); Log.e("in orientation", "" + orientation); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),bm.getHeight(), m, true); return bitmap; } else if (orientation == ExifInterface.ORIENTATION_ROTATE_270) { m.postRotate(270); Log.e("in orientation", "" + orientation); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),bm.getHeight(), m, true); return bitmap; } return bitmap; } catch (Exception e) { return null; } }
También consulte el valor MediaStore.Images.Media.ORIENTATION para obtener el ángulo de rotación. Entonces usted puede girar la imagen por se o lo que.
Lo que estoy haciendo: primero compruebe la orientación de la imagen tomada por la cámara utilizando su información de metadatos, y si encontramos esto en el retrato, entonces tenemos que girar la imagen por 90 y mostrar lo contrario sólo mostrar.
Para obtener la información sobre la orientación de la imagen podemos utilizar ExifInterface. ¡Eso es!
- ActionBar lanza NullPointerException
- Descodificación de HttpEntity en el problema de codificación de cadenas android