¿Alguien puede decirme cómo usar la UIImagePickerController (cámara y el álbum) los delegados determinar la imagen de la orientación, gire en consecuencia, y asignarlo a un UIImageView?

InformationsquelleAutor Bryan | 2010-09-16

3 Comentarios

  1. -4

    No, UIImagePickerController no puede hacerlo de forma explícita.

    Si quieres determinar con base en las imágenes del contenido. Es un tipo difícil problema. ¿Cómo se puede determinar una imagen de la orientación sin la comprensión de los contenidos dentro de él?

    Puedo sugerir que un truco que examine la anchura y la longitud de la devolución de la imagen y ver si es horizontal o vertical. Para la rotación de la imagen, hay algunas librerías y códigos de fuera, pero no probé mucho. Usted puede tomar un vistazo a este blog

    • Gracias por el enlace. ¿Cómo puedo obtener la altura y la anchura de la imagen?
    • Después de leer tu enlace, puede ser que no necesita de la orientación debido a que el tamaño de los métodos de la proporcionada en el enlace de preservar la orientación de la información y un UIImageView puede compensar la orientación automáticamente.
    • usted puede determinar la orientación del uso de metadatos exif
  2. 14

    Vodkhang la respuesta es parcialmente incorrecta – de las cámaras modernas poner una explícita orientación en la imagen cuando se toma la foto. Esto ha sido común para los cerca de 5+ años.

    He utilizado anteriormente en el código de esta respuesta para hacer la rotación por la lectura de la «orientación» de información directa de la imagen:

    UIImagePickerController vista previa de la cámara es el retrato en el paisaje de la aplicación

    • gracias! Esa debe ser la respuesta correcta 🙂
  3. 2
        //Use this UIImagePickerController's  delegate method
        - (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {
            //Getting image user just has shoot
            UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
    
            //Fixing to stick with only one orientation (UIImageOrientationUp in this case)
            switch (image.imageOrientation) {
                case UIImageOrientationDown:
                case UIImageOrientationDownMirrored:
                case UIImageOrientationLeft:
                case UIImageOrientationLeftMirrored:
                case UIImageOrientationRight:
                case UIImageOrientationRightMirrored:
                    image = [UIImage imageWithCGImage:image.CGImage
                                                      scale:image.scale
                                                orientation:UIImageOrientationUp]; //change this if you need another orientation
                    break;
                case UIImageOrientationUp:
                case UIImageOrientationUpMirrored:
                    //The image is already in correct orientation
                    break;
            }
    
            //Do whatever you want with image (likely pass it to some UIImageView to display)
            UIImageView *imgView = [[UIImageView alloc] initWithImage:image];
    
            //Dismiss UIImagePickerController
            [picker dismissModalViewControllerAnimated:NO];
        }

    Nota: UIImageView lee el imageOrientation propiedad y muestra UIImage en consecuencia.

    • Mi aplicación es el iPad, el paisaje sólo, iOS 8/9. Hay un montón de iOS 7 era de preguntas acerca de la habilitación de paisaje en UIImagePickerController (que para mí estaba trabajando fuera de la caja), pero no uno dirigido por qué las fotos que tomo, mientras que en paisaje derecho de la pantalla boca abajo en un UIImageView, mientras que los que tienen en paisaje a la izquierda no. Gracias por tu respuesta.

Dejar respuesta

Please enter your comment!
Please enter your name here