Existe-t-il une API d'image de recadrage pour l'objectif C qui recadre dynamiquement les images dans le projet Xcode? S'il vous plaît fournir quelques astuces ou techniques comment puis-je recadrer les images de la caméra dans l'iPhone.API de recadrage d'image pour iOS
Répondre
Vous pouvez utiliser l'infrastructure CoreGraphics pour rogner dynamiquement l'image. Voici un exemple de partie de code de recadrage d'image dynamique. J'espère que cela vous sera utile.
- (void)drawMaskLineSegmentTo:(CGPoint)ptTo withMaskWidth:(CGFloat)maskWidth inContext:(NXMaskDrawContext)context{
if (context == nil)
return;
if (context.count <= 0){
[context addObject:[NSValue valueWithCGPoint:ptTo]];
return;
}
CGPoint ptFrom = [context.lastObject CGPointValue];
UIGraphicsBeginImageContext(self.maskImage.size);
[self.maskImage drawInRect:CGRectMake(0, 0, self.maskImage.size.width, self.maskImage.size.height)];
CGContextRef graphicsContext = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(graphicsContext, kCGBlendModeCopy);
CGContextSetRGBStrokeColor(graphicsContext, 1, 1, 1, 1);
CGContextSetLineWidth(graphicsContext, maskWidth);
CGContextSetLineCap(graphicsContext, kCGLineCapRound);
CGContextMoveToPoint(graphicsContext, ptFrom.x, ptFrom.y);
CGContextAddLineToPoint(graphicsContext, ptTo.x, ptTo.y);
CGContextStrokePath(graphicsContext);
self.maskImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIGraphicsBeginImageContext(self.displayableMaskImage.size);
[self.displayableMaskImage drawInRect:CGRectMake(0, 0, self.displayableMaskImage.size.width, self.displayableMaskImage.size.height)];
graphicsContext = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(graphicsContext, kCGBlendModeCopy);
CGContextSetStrokeColorWithColor(graphicsContext, self.displayableMaskColor.CGColor);
CGContextSetLineWidth(graphicsContext, maskWidth);
CGContextSetLineCap(graphicsContext, kCGLineCapRound);
CGContextMoveToPoint(graphicsContext, ptFrom.x, ptFrom.y);
CGContextAddLineToPoint(graphicsContext, ptTo.x, ptTo.y);
CGContextStrokePath(graphicsContext);
self.displayableMaskImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[context addObject:[NSValue valueWithCGPoint:ptTo]];
}
Vous pouvez utiliser un code simple ci-dessous pour rogner une image. Vous devez passer l'image et le CGRect qui est la zone de culture. Ici, je recadre l'image de façon à obtenir une partie centrale de l'image originale et l'image retournée est carrée.
// Returns largest possible centered cropped image.
- (UIImage *)centerCropImage:(UIImage *)image
{
// Use smallest side length as crop square length
CGFloat squareLength = MIN(image.size.width, image.size.height);
// Center the crop area
CGRect clippedRect = CGRectMake((image.size.width - squareLength)/2, (image.size.height - squareLength)/2, squareLength, squareLength);
// Crop logic
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], clippedRect);
UIImage * croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return croppedImage;
}
Xcode 5, iOS 7 et exemple d'écran de 4 pouces: Voici un exemple open source d'un SimpleImageCropEditor (Project Zip and Source Code Example. Vous pouvez charger l'éditeur de recadrage d'image en tant que contrôleur de vue modal et le réutiliser. Regardez le code et s'il vous plaît laissez des commentaires constructifs concernant si cet exemple de code répond à la question "Image Cropping API pour iOS".
Démonstration, est un exemple de code source Objective-C, utilisation de UIImagePickerController, @protocol, UIActionSheet, UIScrollView, UINavigationController, MFMailComposeViewController et UIGestureRecognizer.
EDIT - Version Swift
let imageView = UIImageView(image: image)
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
Toutes ces solutions semblent assez compliquées et beaucoup d'entre eux la qualité effectivement subi une dégradation de l'image. Vous pouvez faire beaucoup plus simple en utilisant les méthodes prêtes à l'emploi UIImageView
.
Objective-C
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
[self.imageView setClipsToBounds:YES];
[self.imageView setImage:img];
Cela recadrer l'image en fonction des dimensions que vous avez défini votre UIImageView
(je l'ai appelé le mien imageView
ici).
C'est aussi simple que cela et fonctionne beaucoup mieux que les autres solutions.
Je pense que votre réponse redimensionne simplement l'image temporairement dans les limites de 'UIImageView'. Si vous êtes uniquement concerné par l'affichage de l'image, cela fonctionnera. Toutefois, si, par exemple, vous devez modifier l'image avant de la télécharger sur un serveur, cette approche ne fonctionnerait pas dans ce cas. – Andrew
Vrai mais il cherche une manière qui "recadre dynamiquement les images", donc ma suggestion est parfaitement bien ici. – sf89
- 1. Recadrage de vidéos dans iOS
- 2. Recadrage de la vidéo sur iOS
- 3. Quelle API pour iOS
- 4. recadrage à main levée dans ios
- 5. iframe sur iOS (iPad) problème de recadrage de contenu
- 6. vimeo api avancée pour iOS
- 7. API Document Imaging pour iOS
- 8. PayPal API pour iOS - autorisé?
- 9. API publique pour lecteur de musique iOS?
- 10. API de suivi des envois pour iOS?
- 11. Bing API de recherche pour iOS
- 12. Recadrage d'une image à l'aide du plugin JS | PhoneGap | iOS
- 13. API pour créer un album iOS Photostream
- 14. Édition d'image API payante pour iOS
- 15. API de message dans iOS
- 16. Capteur de pression ios API
- 17. Image Composant de recadrage
- 18. Recadrage de fichiers audio?
- 19. iOS Gyroscope API
- 20. Recadrage de grands jpeg
- 21. WordPress iOS API
- 22. iOS isActiveNetworkMetered api
- 23. Silverlight Recadrage de l'image
- 24. API ios Google Geocoding
- 25. Problème de recadrage d'image
- 26. API Spotify pour ios: télécharger, enregistrer, accéder aux pistes depuis ios spotify api
- 27. UIImagePickerController Recadrage?
- 28. iOS 5 Twitter API
- 29. matrice de recadrage
- 30. Problème de recadrage d'image
Brillant! Fonctionne comme une brise sur iOS 7. Merci! –