2014-10-01 1 views
3

Я работаю над проектом, где мне нужно, чтобы показать экран такой же, как показано ниже enter image description hereКак обрезать изображение, которое приходит внутри круга в прошивкой

Здесь изображение должно быть ежиком, который виден только в кругу. Я пробовал маскировку изображений, как показано ниже. Но он всегда обрезается квадратом.

- (UIImage*) maskImage1:(UIImage *) image withMask:(UIImage *) mask 
{ 
CGImageRef imageReference = image.CGImage; 
CGImageRef maskReference = mask.CGImage; 

CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference), 
             CGImageGetHeight(maskReference), 
             CGImageGetBitsPerComponent(maskReference), 
             CGImageGetBitsPerPixel(maskReference), 
             CGImageGetBytesPerRow(maskReference), 
             CGImageGetDataProvider(maskReference), 
             NULL, // Decode is null 
             YES // Should interpolate 
             ); 

CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask); 
CGImageRelease(imageMask); 

UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference]; 
CGImageRelease(maskedReference); 

return maskedImage; 
} 

Просьба предложить, как я могу это достичь?

+0

http://stackoverflow.com/a/16475824/341994 – matt

ответ

1

Используйте демонстрационный шаблон для масштабирования и обрезки изображения. Circle Image Crop

для маскировки вашего изображения в круг, как указано ниже.

//Masking the image 
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
             CGImageGetHeight(maskRef), 
             CGImageGetBitsPerComponent(maskRef), 
             CGImageGetBitsPerPixel(maskRef), 
             CGImageGetBytesPerRow(maskRef), 
             CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
    return [UIImage imageWithCGImage:masked]; 
} 
0
UIGraphicsBeginImageContextWithOptions(hiddenView.bounds.size, self.view.opaque, 0.0); //In this I have take screenshot of a hiddenView that I have added from IB with a background color anything(in this case it's orange). 
//Replace this hiddenView object with your object of whom you want to take screenshot. 

[hiddenView.layer renderInContext:UIGraphicsGetCurrentContext()]; //Similarly replace hiddenView here with your object. 

UIImage*theImage=UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

NSData*theImageData=UIImageJPEGRepresentation(theImage, 1.0); 
imgView.image = [UIImage imageWithData:theImageData]; //I placed a UIImageView to check and place the screenshot into it as Image ,simply to cross check if I'm getting a right screenshot or not. 
//So you could also remove this line after your have verified that your getting right screen shot. 
+0

Это не возвращает окружность изображение –

+0

могли бы вы показать код? – nikhil84

+0

Я упомянул выше –

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