2012-06-20 5 views
5

Я хочу, чтобы обрезать изображение в моем приложении iPhone, используя любой близкий путь, как UIBezierPath. Я знаю, что можно использовать прямоугольник, но я хочу, чтобы культура была в другой форме. например, я делаю одну форму с помощью касания и хочу обрезать это изображение так, как это возможно. любое предложение или помощь. Спасибо заранее.Я хочу обрезать изображение, используя любой близкий путь, например UIBezierPath. это возможно в приложении iPhone?

+1

Я никогда не делал раньше, но я полагаю, вам нужно использовать магу маскировку. Попробуйте прочитать это яблоко Doc [Quartz 2D Programming Guide] (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 можете ли вы использовать PLZ здесь, как обрезать изображение с помощью shapelayer ..... –

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;} 

 Смежные вопросы

  • Нет связанных вопросов^_^