una tener tamaño t7i t71 resolucion relacion rebel quitar que programa por poner pixeles pixelaje perder para pantalla paginas pagina mejores manejo imagenes imagen fotos fotograficas fotografia español eos debe configurar completa como caracteristicas canon cambiar camaras camara calculadora aspecto ajustar 55mm objective-c ios uiimagepickercontroller aspect-ratio

objective-c - tener - relacion de aspecto tv lg



Objetivo C: Cómo arreglar la relación de aspecto de la imagen(y no cambiar para ajustar el marco de visualización de imagen) (3)

Estoy usando el UIImagePickerController para seleccionar imágenes para mi aplicación. Sin embargo, estoy enfrentando algunos desafíos con respecto al mantenimiento de la relación de aspecto de las imágenes seleccionadas

Por ejemplo,

Tengo una imagen en bruto en el teléfono de la siguiente manera (no una imagen cuadrada):

Después de seleccionar la imagen en el iPhone a través de la página ''mover y escalar'' para recortar la imagen, el resultado es el siguiente: (la relación de aspecto todavía se mantiene aquí)

Mi aplicación mostrará la imagen seleccionada en un UIImageView con un marco cuadrado (200 x 200). Después de configurar la imagen seleccionada en UIImageView (UIImageView.image = selectedImage), la relación de aspecto de la imagen no se mantiene, sino que sigue el marco de UIImageView:

¿Hay alguna manera de mantener la relación de aspecto de la imagen en este caso?

EDITAR: Actualizar el resultado esperado

Después de pensar un poco, me doy cuenta de que la mejor manera de resolver mi problema es asegurarme de que para tales imágenes (no cuadradas), necesito "convertirlas" en imágenes cuadradas, es decir, llenar los espacios vacíos en la parte superior e inferior de las imágenes para hacer cuadrado por ejemplo

Imagen esperada: (con los bordes superior e inferior agregados)

EDITAR: Actualizar con código de ejemplo

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo { self.imageView.contentMode = UIViewContentModeScaleAspectFill; self.imageView.image = image; [[picker parentViewController] dismissModalViewControllerAnimated:YES]; //Compress image UIImage *image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)]; self.imageData = UIImageJPEGRepresentation(image, 0.75); }

Al agregar el código "self.imageView.contentMode = UIViewContentModeScaleAspectFill;", pude obtener la imagen cuadrada en uiimageview

Pero parece que la imagen original aún no era una imagen cuadrada, por lo tanto, el problema de sesgo todavía ocurrirá cuando haga "UIImage * image = [self scaleImage: img toSize: CGSizeMake (612.0,612.0)];". ¿Mi suposición es correcta? De todos modos, para mitigar este problema ya que todavía necesitaré mostrar la imagen ''comprimida'' en otra parte de la aplicación.


Debe ajustar el modo de contenido de su UIImageView :

myImageView.contentMode = UIViewContentModeScaleAspectFit;

Solo para las patadas: verifique la documentación de UIViewContentMode constantes de UIViewContentMode .


Haciendo myImageView.contentMode = UIViewContentModeScaleAspectFit; no es suficiente porque cambia la relación de aspecto de la imagen de la forma que Zhen quiere, pero no cambia la imagen de origen, que es lo que necesita Zhen. La única forma de hacerlo es usar UIGraphicsImageContext como se explica aquí: ¿ Cambiar el tamaño de UIImage con relación de aspecto?


Puede establecer la propiedad UIImageView en su instancia de UIImageView , como:

myImageView.contentMode = UIViewContentModeScaleAspectFit;

Esto lo forzará a preservar la relación de aspecto de su imagen al escalar. También hay una serie de otros valores que puede configurar aquí para producir otros comportamientos, como se describe en la documentación de referencia .