C'è qualche immagine di ritaglio API per l'obiettivo C che ritaglia le immagini dinamicamente nel progetto Xcode? Si prega di fornire alcuni trucchi o tecniche come potrei ritagliare le immagini della fotocamera in iPhone.Image Cropping per iOS
risposta
È possibile utilizzare il framework CoreGraphics per ritagliare l'immagine in modo dinamico. Ecco una parte di codice di esempio del ritaglio di immagine dinamico. Spero che questo ti sia d'aiuto.
- (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]];
}
È possibile utilizzare sotto semplice codice per ritagliare un'immagine. Devi passare l'immagine e il CGRect che è l'area di ritaglio. Qui, ritagliamo l'immagine in modo da ottenere una parte centrale dell'immagine originale e l'immagine restituita è quadrata.
// 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, e l'esempio 4 pollici: Segue un esempio open source di un SimpleImageCropEditor (Project Zip and Source Code Example. È possibile caricare l'editor di ritaglio di immagini come controller di visualizzazione modale e riutilizzarlo. Guarda il codice e lascia commenti costruttivi riguardo se questo codice di esempio risponde alla domanda "Image Cropping API per iOS".
dimostra è esempio codice sorgente Objective-C, l'uso di UIImagePickerController, @protocol, UIActionSheet, UIScrollView, UINavigationController, MFMailComposeViewController e UIGestureRecognizer.
EDIT - Swift versione
let imageView = UIImageView(image: image)
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
Tutte queste soluzioni sembra piuttosto complicato e molti di loro in realtà degradare la qualità dell'immagine. Si può fare molto più semplice usando i metodi originali UIImageView
.
Objective-C
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
[self.imageView setClipsToBounds:YES];
[self.imageView setImage:img];
Ciò ritagliare l'immagine in base alle dimensioni che hai impostato per il tuo UIImageView
(ho chiamato il mio imageView
qui).
È semplice e funziona molto meglio delle altre soluzioni.
Penso che la tua risposta ridimensioni semplicemente l'immagine temporaneamente entro i limiti di 'UIImageView'. Se si è interessati solo alla visualizzazione dell'immagine, funzionerà. Tuttavia, se, ad esempio, è necessario modificare l'immagine prima di caricarla su un server, questo approccio non funzionerebbe in quel caso. – Andrew
Vero ma lui/lei sta cercando un modo per "ritagliare le immagini in modo dinamico", quindi il mio suggerimento sta perfettamente bene qui. – sf89
- 1. html5 image cropping
- 2. iOS 6 background image
- 3. iOS SDK - Image masking
- 4. App Cropping a una larghezza e altezza specifiche
- 5. Reviewer documento iOS come Image browser
- 6. iOS SDWebImage fade in new image
- 7. iOS 8 Condividi estensione Safari Image
- 8. iPhone image gallery
- 9. Photo/Image Viewer per Monotouch
- 10. background-image: per: link visitati?
- 11. Image Watch per l'applicazione C#
- 12. Image onload per immagini statiche
- 13. Image Steganography
- 14. Come creare un semplice filtro personalizzato per iOS utilizzando Core Image Framework?
- 15. Interfaccia Cloud/RESTful per Image/GraphicsMagick
- 16. Alternative a Google Earth per sat image
- 17. Image Hash per immagini molto simili
- 18. Impostare gli angoli arrotondati per svg: image
- 19. MVC helper - using @URL per image src?
- 20. OCR (tesseract), rotazione intelligente per Image
- 21. Padding interno per JTextArea con sfondo Image
- 22. GET data: image/png; base64, {{image}} net :: ERR_INVALID_URL
- 23. iPhone - appiattimento di UIImageView e subviews a image = blank image
- 24. Il tipo MIME 'image/jpg' è uguale a 'image/jpeg'?
- 25. NSImageView image aspect fill?
- 26. Flip Image with Graphics2D
- 27. Android Image Editor
- 28. JTransforms FFT on Image
- 29. Dockerfile vs Docker image
- 30. Picasso image load callback
Brillante! Funziona come un gioco da ragazzi su iOS 7. Grazie! –