Objectif C: Comment fixer le ratio d'aspect de l'image (et de ne pas modifier pour l'adapter à imageview image)

Je suis en utilisant le UIImagePickerController pour sélectionner des images pour mon application. Cependant, je suis confronté à certains défis en ce qui concerne à maintenir le ratio d'aspect des images sélectionnées

Par exemple,

J'ai une image raw sur le téléphone comme suit (pas d'image carrée):

Objectif C: Comment fixer le ratio d'aspect de l'image (et de ne pas modifier pour l'adapter à imageview image)

Après la sélection de l'image sur l'iphone via l' " de se déplacer et d'échelle de la page pour recadrer l'image, le résultat est comme suit: (rapport d'aspect est encore le cas ici)

Objectif C: Comment fixer le ratio d'aspect de l'image (et de ne pas modifier pour l'adapter à imageview image)

Mon application affiche l'image sélectionnée dans un UIImageView avec un cadre carré (200 x 200). Après le réglage de l'image sélectionnée à l'UIImageView (UIImageView.image = selectedImage), le format de l'image n'est pas maintenue, mais plutôt suivie le cadre de la UIImageView: (L'image semble biaisée maintenant dans mon UIImageView):

Objectif C: Comment fixer le ratio d'aspect de l'image (et de ne pas modifier pour l'adapter à imageview image)

Est-il un moyen de maintenir le ratio d'aspect de l'image dans ce cas?

EDIT: mise à Jour résultat attendu

Après réflexion, je me rends compte que la meilleure façon de résoudre mon problème est de s'assurer que de telles images (non carré), j'ai besoin de les "convertir" en images carrées c'est à dire remplir les espaces vides en haut et en bas des images pour en faire un carré par exemple

Attendus de l'image: (avec le haut et le bas frontières)

Objectif C: Comment fixer le ratio d'aspect de l'image (et de ne pas modifier pour l'adapter à imageview image)

EDIT: mise à Jour avec des exemples de code

- (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);
}

En ajoutant le code "auto.imageView.contentMode = UIViewContentModeScaleAspectFill;", j'ai pu obtenir la place de l'image dans le uiimageview

Objectif C: Comment fixer le ratio d'aspect de l'image (et de ne pas modifier pour l'adapter à imageview image)

Mais il semble que l'image d'origine n'est toujours pas une image carrée, d'où le problème de l'inclinaison en aura encore quand je fais "UIImage *image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)];". Est mon hypothèse est correcte? De toute façon à atténuer ce problème que j'ai encore besoin d'afficher le "compressé" image ailleurs dans l'application.

  • un million de mercis pour m'indiquer le post, c'est exactement ce dont j'avais besoin. Vous pouvez poster votre commentaire est une réponse afin que je puisse l'accepter. Merci encore
  • Essayez de lire cette autre réponse: stackoverflow.com/questions/1703100/...
  • Pour une raison étrange, je ne peux pas, il est toujours me poster un commentaire
  • Ok, je pense que c'était trop court
InformationsquelleAutor Zhen | 2011-07-13