2014-03-24 3 views
0

Я работаю над приложением, в котором мне нужно дать возможность обрезки. Как только я выбираю изображение с камеры или галереи, он должен открыть на странице редактирования, где у нас есть овальное изображение с масштабированием &. Как только мы нажмем на приложение, захваченное изображение обрезается в овальной форме.Обрезать изображение в овальной форме

Теперь следующий экран из вольерного sdk. Но он имеет квадратное обрезку & нуждается в обрезке в овальной форме. Я попытался настроить его, но не смог этого сделать.

enter image description here

Может кто-нибудь предложить мне самый простой и лучший подходящий способ осуществить это.

Спасибо.

+4

Знаете ли вы, как замаскировать изображение? Вы знаете, как создать овальную форму? Вы знаете, как рисовать в контексте изображения? –

+0

Да, я знаю маскировку, и я тоже могу создать овальную форму и рисовать в контексте изображения. Но я хочу знать, есть ли альтернативный и лучший подходящий вариант или нет. – Mayur

+0

Вы также можете использовать обтравочный контур, как описано в [мой ответ здесь] (http://stackoverflow.com/questions/22642136/uiimage-fill-transparent-part-with-another-image/22644165#22644165). – user1118321

ответ

1
- (UIImage *)croppedPhoto { 
    // For dealing with Retina displays as well as non-Retina, we need to check 
    // the scale factor, if it is available. Note that we use the size of teh cropping Rect 
    // passed in, and not the size of the view we are taking a screenshot of. 
CGRect croppingRect = CGRectMake(imgMaskImage.frame.origin.x, 
imgMaskImage.frame.origin.y, imgMaskImage.frame.size.width, 
imgMaskImage.frame.size.height); 

    imgMaskImage.hidden=YES; 

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 
    UIGraphicsBeginImageContextWithOptions(croppingRect.size, YES, [UIScreen mainScreen].scale); 
    } else { 
     UIGraphicsBeginImageContext(croppingRect.size); 
    } 

    // Create a graphics context and translate it the view we want to crop so 
    // that even in grabbing (0,0), that origin point now represents the actual 
    // cropping origin desired: 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextTranslateCTM(ctx, -croppingRect.origin.x, -croppingRect.origin.y); 
    [self.view.layer renderInContext:ctx]; 

    // Retrieve a UIImage from the current image context: 
    UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    // Return the image in a UIImageView: 
    return snapshotImage; 
} 
1

Этот тип маскировки можно выполнить, иначе вы используете коко управления

.h файл: -

@interface yourClass : UIImageView 

@end 

.m файл: -

#import <QuartzCore/QuartzCore.h> 

    @implementation yourClass 

    - (void)awakeFromNib 
    { 
     [super awakeFromNib]; 
     CALayer *mask = [CALayer layer]; 
     mask.contents = (id)[[UIImage imageNamed:@"ovalMask.png"] CGImage]; 
     CGSize size = self.frame.size; 
     mask.frame = CGRectMake(0, 0, size.width, size.height); 
     self.layer.mask = mask; 
     [self.layer setMasksToBounds:YES]; 
    } 

@end 
+0

, можете ли вы подробно рассказать о нем, как я могу это использовать? – Mayur

+0

одно черное овальное изображение и сделал пользовательский класс – Spynet

+0

его не работает, для чего я его хочу. – Mayur

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