2012-06-20 8 views
5

मैं UIBezierPath जैसे किसी भी करीबी पथ का उपयोग करके अपने आईफोन ऐप में छवि को फसल करना चाहता हूं। मुझे पता है कि आयताकार का उपयोग करना संभव है लेकिन मैं विभिन्न आकार में फसल चाहता हूं। जैसे मैं स्पर्श का उपयोग करके एक आकार बना देता हूं और उस छवि को फसल करना चाहता हूं तो यह कैसे संभव है। कोई सुझाव या सहायता। अग्रिम धन्यवाद।मैं UIBezierPath जैसे किसी भी करीबी पथ का उपयोग करके छवि को फसल करना चाहता हूं। आईफोन एप्लिकेशन में यह संभव है?

+1

मैं पहले कभी नहीं किया था लेकिन मैं आपको दाना मास्किंग उपयोग करने की आवश्यकता लगता है। इस सेब डॉक [क्वार्ट्ज 2 डी प्रोग्रामिंग गाइड] को पढ़ने का प्रयास करें (https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066- CH212-CJBDIJEE)। हो सकता है कि आप bezierPath प्रोग्रामेटिक रूप से या उपयोगकर्ता इंटरैक्शन के साथ एक पारदर्शी छवि बना सकें और फिर अपनी छवि के लिए मुखौटा के रूप में इस छवि का उपयोग करें। – Gabriele

+0

मास्किंग पाने का तरीका है। इस संक्षिप्त उदाहरण पर एक नज़र डालें http://mobiledevelopertips.com/cocoa/how-to-mask-an-image.html – msg

उत्तर

2

आप अपनी छवि को आकार देने वाले के साथ फसल कर सकते हैं। ऐसा करने के लिए आपको एक पथ बनाना होगा जो आपकी नई छवि के लिए सीमाओं के रूप में उपयोग किया जाएगा। आपको यह question देखना चाहिए।

CALayer* contentLayer = [CALayer layer]; 
[contentLayer setFrame:CGRectMake(0, 0, 80, 80)]; 
CAShapeLayer* mask = [CAShapeLayer layer]; 

CGMutablePathRef path = CGPathCreateMutable(); 

CGPathMoveToPoint(path, NULL, 10, 10); 
CGPathAddLineToPoint(path, NULL, 10, 80); 
CGPathAddLineToPoint(path, NULL, 80, 80); 
CGPathAddLineToPoint(path, NULL, 80, 10); 
mask.path = path; 

[contentLayer setContents:(id)[[UIImage imageNamed:@"image.png"] CGImage]]; 
[contentLayer setMask:mask];   

[[self layer]addSublayer:contentLayer]; 

ऐसा कुछ।

+0

Vitaliy1 क्या आप यहां कोड डाल सकते हैं कि छवि को आकार देने वाले के साथ कैसे फसल करें ..... –

0

// कोड का उपयोग में:

-(UIImage *)croppedImage 

{ 
    UIImage *myImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 
[self.bezierPath closePath]; 

CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.0, 0.0, 0.0); 
_b_image = self.bg_imageview.image; 

CGSize imageSize = _b_image.size; 
CGRect imageRect = CGRectMake(0, 0, imageSize.width, imageSize.height); 

UIGraphicsBeginImageContextWithOptions(imageSize, NO, [[UIScreen mainScreen] scale]); 
[self.bezierPath addClip]; 
[_b_image drawInRect:imageRect]; 
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return croppedImage;} 
संबंधित मुद्दे