Je tournois mon image avec le code suivant: mais il n'a pas d'arêtes vives, est-ce que quelqu'un connaît une solution pour cela? P> Voici le Image I Get: p> p> p>
6 Réponses :
Chaque fois que vous vous transformez sur une image (sauf par incréments de 90 °), il va causer des bords légèrement plus doux en raison d'une interpolation de pixels. P>
Oke, mais je ne pense pas que mon image a de légers bords plus doux, il a vraiment l'air laids!, Pourriez-vous jeter un coup d'œil à l'image et dites-moi si vous pensez que c'est normal? J'ai inclus le lien dans ma question.
Les bords de l'image lui-même ont l'air déchiquetés car ils sont placés directement dans une grille de pixels et ne sont pas interpolés. Interpolation de voisin la plus proche est le type d'interpolation le plus simple, où si vous avez la grille de pixel A et Vous déplacez votre image sur Pixel Grid B, les pixels de la grille B sont choisis en choisissant simplement le pixel le plus proche de la grille A. Autres formes d'interpolation Choisissez une moyenne pondérée des pixels les plus proches pour arriver à la valeur Pixel de la grille B. / p>
Votre image, avec ses bords déchiquetés, on dirait qu'il utilise l'interpolation voisine la plus proche, qui peut être le type d'interpolation par défaut sur une transformation affine sur un iPhone. P>
Lorsque vous utilisez un autre système d'interpolation autre que celui du voisin le plus proche, vous obtiendrez aliasing effets, où le sous-échantillonnage n'est pas parfait lorsque vous transférez d'une grille de pixels à une autre. Cet effet fait que les arêtes dans l'image lui-même semblent bouleverses qu'elles ne le feraient autrement. p>
Merci pour votre explication, mais savez-vous comment je peux le faire dans l'objectif c pour l'iPhone.
Peut-être essayer de définir cginterpolationqualité à kcginterpolationhigh
Avez-vous un exemple sur Ho pour définir cette valeur. J'ai juste mon image d'envisager avec un uiimage à l'intérieur.
Ajoutez simplement une bordure transparente 1px à votre image
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height); UIGraphicsBeginImageContext( imageRect.size ); [image drawInRect:CGRectMake(1,1,image.size.width-2,image.size.height-2)]; image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
Utilisation de la calayeuse UiImageView pour rasteriser l'image fournira la meilleure antialiasing.
imageView.layer.shouldRasterize = YES;
Cela a fonctionné parfait pour moi. Jaggies fixes sur une couleur d'arrière-plan UIView avec une couleur d'arrière-plan, tourné à quelques degrés.
Il existe une clé que vous pouvez définir dans Info.Plist qui permet une antialiasing des bords: UIViewedgeAntialiasing. P>
Comme décrit dans la réponse suivante: Lorsque je fais pivoter un UIImageView avec la propriété Transformer, les bords pixellate p>
la solution la plus simple: p>
ajoutez simplement cette paire de la valeur de clé à votre info.Plist: UIViewedgeAntialiasing défini sur Oui. P> blockQuote>