Redimensionner UIImage avec un ratio d'aspect?
Je suis en utilisant ce code pour redimensionner une image sur l'iPhone:
CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0);
UIGraphicsBeginImageContext(screenRect.size);
[value drawInRect:screenRect blendMode:kCGBlendModePlusDarker alpha:1];
UIImage *tmpValue = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Qui fonctionne très bien, tant que le ratio d'aspect de l'image correspond à celle de la nouvelle image redimensionnée. J'aimerais modifier ce afin qu'il conserve le rapport d'aspect correct et met juste un fond noir n'importe où l'image ne s'affiche pas. Je voudrais donc encore se retrouver avec un 320x480 image mais avec du noir sur le haut et le bas ou sur les côtés, en fonction de la taille originale de l'image.
Est-il un moyen facile de faire cela semblable à ce que je suis en train de faire? Merci!
- Voici un article qui maintient le rapport d'aspect: stackoverflow.com/questions/7645454/...
Vous devez vous connecter pour publier un commentaire.
Après la configuration de votre écran rect, faire quelque chose comme de décider de ce rectangle pour dessiner l'image dans:
Si vous ne voulez pas à agrandir les images plus petites que la screenRect, assurez-vous que
factor
est supérieur ou égal à un (par exemplefactor = fmax(factor, 1)
).À l'arrière-plan noir, vous voulez probablement seulement pour définir le contexte de la couleur au noir et appeler fillRect avant de dessiner l'image.
value
est la variable Cory est utiliser pour stocker l'image source.float factor = max( …
àfloat factor = MAX( …
tous les caps) a résolu le problème. FWIW la raison que j'avais besoin de le redimensionner une UIImage (par opposition à UIImageView) était parce que j'étais réglage de l'image dans un défaut de style UITableCell. Cela m'a aidé à éviter d'avoir à mettre en œuvre une coutume UITableCell. Merci à Frank pour une EXCELLENTE solution!CGFloat
s (double) en mode natif pour toutes les valeurs de coordonnées. Donc sur la Rétine des écrans de votre méthode peut être désactivé par un demi-point 🙂factor
) basée sur le fait qu'il doit être réduit de plus dans le sens horizontal (hFactor
) ou verticale (vFactor
) de direction pour s'adapter à l'écran un rectangle.UIImage
que vous êtes le redimensionnement.