J'ai vu dans de nombreux articles pour redimensionner l'image en gardant les proportions. Ces fonctions utilisent les points fixes (Largeur et Hauteur) pour RECT lors du redimensionnement. Mais dans mon projet, je dois redimensionner la vue en fonction de la largeur seule, la hauteur doit être prise automatiquement en fonction du rapport hauteur / largeur. n'importe qui m'aide à y parvenir.
136
newWidth
variable ici, c'est déjài_width
.UIGraphicsBeginImageContextWithOptions(CGSizeMake(newWidth, newHeight), NO, 0);
plutôtUIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
Si vous ne savez pas si l'image sera portrait ou paysage (par exemple, l'utilisateur prend une photo avec un appareil photo), j'ai créé une autre méthode qui prend les paramètres de largeur et de hauteur maximum.
Disons que vous avez un
UIImage *myLargeImage
rapport 4: 3.La UIImage redimensionnée sera 1024x768 si paysage; 768x1024 si portrait. Cette méthode générera également des images de résolution plus élevée pour l'affichage de la rétine.
la source
min(ratioX, ratioY)
. Sinon, si la largeur est plus grande, elle peut ne pas correspondre à la hauteur maximale.Meilleure réponse Maverick 1st est correctement traduite en Swift (fonctionne avec le dernier swift 3 ):
la source
merci @ Maverick1st l'algorithme, je l'ai implémenté
Swift
, dans mon cas, la hauteur est le paramètre d'entréela source
Cette méthode est une catégorie sur UIImage. S'adapte à quelques lignes de code à l'aide d'AVFoundation. N'oubliez pas d'importer
#import <AVFoundation/AVFoundation.h>
.la source
Version Swift 5 d'ajustement de l'aspect à la hauteur , basée sur la réponse de @ János
Utilise l'
UIGraphicsImageRenderer
API moderne , donc unUIImage
retour valide est garanti.Vous pouvez l'utiliser en conjonction avec un élément d'image PDF (vectoriel), pour préserver la qualité quelle que soit la taille de rendu.
la source
Le moyen le plus simple consiste à définir le cadre de votre
UIImageView
et à définir l'contentMode
une des options de redimensionnement.Le code va comme ceci - Cela peut être utilisé comme une méthode utilitaire -
la source
Par programme:
Storyboard:
la source
Eh bien, nous avons quelques bonnes réponses ici pour redimensionner l'image, mais je modifie simplement selon mes besoins. J'espère que cela aidera quelqu'un comme moi.
Ma condition était
Vous pouvez également vérifier cela pour le calcul de redimensionnement.
la source
Importez simplement AVFoundation et utilisez
AVMakeRectWithAspectRatioInsideRect(CGRectCurrentSize, CGRectMake(0, 0, YOUR_WIDTH, CGFLOAT_MAX)
la source
Pour améliorer la réponse de Ryan:
la source
Lorsque l'échelle est définie sur 0,0, le facteur d'échelle de l'écran principal est utilisé, qui pour les écrans Retina est de 2,0 ou plus (3,0 sur l'iPhone 6 Plus).
la source
Solution de Ryan @Ryan en code SWIFT
utilisation:
la source
Dans Swift 3, il y a quelques changements. Voici une extension de UIImage:
la source
Zeeshan Tufail et Womble répondent dans Swift 5 avec de petites améliorations. Ici, nous avons une extension avec 2 fonctions pour redimensionner l'image
maxLength
de n'importe quelle dimension et la compression jpeg.la source
Celui-ci était parfait pour moi. Conserve le rapport hauteur / largeur et prend un
maxLength
. La largeur ou la hauteur ne dépassera pasmaxLength
la source
Calcule la meilleure hauteur de l'image pour la largeur disponible.
la source
Je l'ai résolu d'une manière beaucoup plus simple
Le multiplicateur de l'échelle définira l'écaillage de l'image, plus le multiplicateur est petit l'image. afin que vous puissiez vérifier ce qui convient à votre écran.
Ou vous pouvez également obtenir le multiplicateur en divisant la largeur de l'image / la largeur de l'écran.
la source