2012-01-19 2 views
1

Я создаю приложение, в котором я показываю изображение .jpg. Я хочу обрезать часть изображения в круглой форме. Пожалуйста, помогите мне решить эту проблему.Изображение обрезки в круглой форме

image = [UIImage imageNamed:@"images2.jpg"]; 
imageView = [[UIImageView alloc] initWithImage:image]; 

CGSize size = [image size]; 

[imageView setFrame:CGRectMake(0, 0, size.width, size.height)]; 
[[self view] addSubview:imageView]; 
[imageView release];  

Скажите, пожалуйста, чтобы обрезать часть изображения в круглой форме

+0

возможного дубликат [Как обрезать UIImage на овальной форме или форме круга?] (Http://stackoverflow.com/questions/6530573/how-to-crop -оизображение-на-овальной форме или круговой форме) –

ответ

2

Methinks это дубликат. В этом вопросе есть отличный принятый ответ и ссылки на другие статьи: How to crop UIImage on oval shape or circle shape?

EDIT: Есть несколько простых способов обойти это. CALayer с углом Radius очевидным. Но что более важно, существует метод CGImageCreateWithMask: он может быть применен к более широкому спектру до и вокруг кругов и других фигур. Обратите внимание: если ваше изображение является JPEG, то CGImageCreateWithMask вернет черный фон, потому что JPEG не имеет альфа-канала.

+1

Если это дубликат, вы должны прокомментировать это, а не отвечать на него. – Sarah

+0

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

+0

лучше сейчас – Sarah

2

Вы можете сделать это, используя каркас кварцевого сердечника, на самом деле у него есть классный Apis для этого. Проверьте thisRoundedImageView пример.

+1

Эта ссылка метать 404 :( – Femina

+0

Check out: - https://github.com/kidsid49/RoundedImageView – kidsid49

0
 You can use RSKImageCropper for crop the image in circular shape. I am implemented the fallowing code to crop the image in circular shape with the help of RSKImageCropper. 

     1. Install the pod RSKImageCropper. 
     2. #import <RSKImageCropper/RSKImageCropper.h> in your viewcontroller 
     3. Add delegate to your interface i.e. RSKImageCropViewControllerDelegate 
     4. Implement the fallowing code in **didFinishPickingMediaWithInfo** delegate. 

    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
     { 
      UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 
       [picker dismissViewControllerAnimated:YES completion: 
       ^{ 
       RSKImageCropViewController *imageCropVC = [[RSKImageCropViewController alloc] initWithImage:originalImage]; 
        imageCropVC.avoidEmptySpaceAroundImage = YES; 
       imageCropVC.delegate = self; 
        [self presentViewController:imageCropVC animated:NO completion:nil]; 
       }]; 
     } 

    5. Now implement the delegate of RSKImageCropper. 

    - (void)imageCropViewControllerDidCancelCrop:(RSKImageCropViewController *)controller 
    { 
     [controller dismissViewControllerAnimated:NO completion:nil]; 
    } 

    // The original image has been cropped. 
    - (void)imageCropViewController:(RSKImageCropViewController *)controller 
         didCropImage:(UIImage *)croppedImage 
         usingCropRect:(CGRect)cropRect 
    { 
     self.imgVIew.image = croppedImage; 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 

    // The original image has been cropped. Additionally provides a rotation angle used to produce image. 
    - (void)imageCropViewController:(RSKImageCropViewController *)controller 
         didCropImage:(UIImage *)croppedImage 
         usingCropRect:(CGRect)cropRect 
         rotationAngle:(CGFloat)rotationAngle 
    { 
     self.imgVIew.image = croppedImage; 
     [controller dismissViewControllerAnimated:NO completion:nil]; 
    } 

Для получения дополнительной информации проверить это https://github.com/ruslanskorb/RSKImageCropper

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