Redimentioner une image sans la couper
Bonjour, j'ai un prolème j'ai une image que je voudrais redimmentionner, le code fonctionne bien sur ce qui est de la redimention mais je voudrais qu'elle garde la même forme que l'originale parce que dans le code que j'ai mit ça prend le milieu ça compte le nombre de pixel et ça coupe ...
Savez comment faire pour ne pas qu'elle se coupe ?
merci
_image1.frame = CGRectMake(_image1.center.x, _image1.center.y, 193, 141);
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ouah...
Alors :
1) Là ton code ne "redimensionne pas une image" il change la frame de l'UIImageView qui affiche l'image. L'objet UIImage fait toujours la même taille (même résolution en pixels, tu gardes l'original), c'est l'UIImageView qui l'affiche qui va changer de taille. Un peu comme si dans Aperçu, tu changeais juste l'échelle d'affichage à 50%, sans pour autant demander de redimensionner l'image réellement et la resauver.
2) Les Magic Numbers, c'est mal
3) Normal que ça prenne le milieu de l'image, c'est explicitement ce que tu demandes avec _image1.center
4) Regarde les propriétés contentMode de UIView, qui vont affecter la façon dont le contenu de la UIView (en l'occurrence de la UIImageView) est redimensionné, en gardant les proportions ou pas selon ce que tu demandes.
ok, merci AliGator je vais voir du coté de contentMode
Merci, j'ai donc mit
en plus du code précédent
sinon tu as dit AliGator
c'est quoi les Magic Numbers ? les nombres comme 193, 141 que j'ai mit dans mon CGRectMake ?
Oui.
Voir Wikipedia
à‰dit : Grrrr .. Encore grillé par Turbo-Ali !
Il suffit de lire Wikipedia. Ali utilise la deuxième définition mentionnée dans wikipedia "une constante non nommée ou mal documentée"
(Trois d'un coup, et je suis encore le dernier !)
D'accord merci, je vais eesayer de corriger ça
Idéalement, tu devrais plutôt utiliser une constante pour la largeur et la hauteur, voire juste une constante pour la largeur, et calculer la hauteur en fonction de ce qui est nécessaire (règle de 3 pour garder l'aspect ratio de ton image, en utilisant la constante de largeur + les dimensions de l'image avec _image1.image.size pour le calcul, typiquement), ou un truc comme ça.
Comme ça tu comprendras quand tu vas relire ton code d'où sortent ces chiffres, si tu dois les réutiliser autre part dans ton code tu ne risques pas d'oublier de les changer ou de faire une erreur de copie, si tu changes d'image un jour et qu'elle n'a pas la même taille ça va s'adapter, si tu as besoin de changer la valeur de la constante de largeur, le reste va s'adapter sans que tu sois obligé de réfléchir à quelle valeur dépend de quelle autre et lesquelles il faut changer sans en oublier...
Ah oui, je comprends mieux maintenant, c'est vrai que je ne pense jamais au cas où je change d'image ....
sinon ça compte pas en tant que magic number si je fais ça ?