una redondas recortar para online imagenes imagen gratis fotos forma como circulo app iphone ios4

iphone - redondas - Cómo recortar UIImage en forma oval o forma de círculo?



recortar fotos redondas (10)

Después de una larga búsqueda, encontré la forma correcta de rodear la imagen

Descargue el archivo de respaldo de la URL http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

#import "UIImage+RoundedCorner.h" #import "UIImage+Resize.h"

Siguiendo las líneas utilizadas para cambiar el tamaño de la imagen y convertir en redondo con radio

UIImage *mask = [UIImage imageNamed:@"mask.jpg"]; mask = [mask resizedImage:CGSizeMake(47, 47) interpolationQuality:kCGInterpolationHigh ]; mask = [mask roundedCornerImage:23.5 borderSize:1];

Proporcione ideas sobre cómo recortar UIImage en forma oval o en forma de círculo. Por favor guíame.


Empecé a investigar esto hace un par de semanas. Probé todas las sugerencias aquí, ninguna de las cuales funcionó bien. En la gran tradición de RTFM, fui y leí la documentación de Apple sobre la Programación 2D de Quartz y se me ocurrió esto. Pruébelo y dígame cómo va.

El código podría modificarse con bastante facilidad para recortar a un elipse, o cualquier otra forma definida por una ruta.

Asegúrate de incluir Quartz 2D en tu proyecto.

#include <math.h> + (UIImage*)circularScaleAndCropImage:(UIImage*)image frame:(CGRect)frame { // This function returns a newImage, based on image, that has been: // - scaled to fit in (CGRect) rect // - and cropped within a circle of radius: rectWidth/2 //Create the bitmap graphics context UIGraphicsBeginImageContextWithOptions(CGSizeMake(frame.size.width, frame.size.height), NO, 0.0); CGContextRef context = UIGraphicsGetCurrentContext(); //Get the width and heights CGFloat imageWidth = image.size.width; CGFloat imageHeight = image.size.height; CGFloat rectWidth = frame.size.width; CGFloat rectHeight = frame.size.height; //Calculate the scale factor CGFloat scaleFactorX = rectWidth/imageWidth; CGFloat scaleFactorY = rectHeight/imageHeight; //Calculate the centre of the circle CGFloat imageCentreX = rectWidth/2; CGFloat imageCentreY = rectHeight/2; // Create and CLIP to a CIRCULAR Path // (This could be replaced with any closed path if you want a different shaped clip) CGFloat radius = rectWidth/2; CGContextBeginPath (context); CGContextAddArc (context, imageCentreX, imageCentreY, radius, 0, 2*M_PI, 0); CGContextClosePath (context); CGContextClip (context); //Set the SCALE factor for the graphics context //All future draw calls will be scaled by this factor CGContextScaleCTM (context, scaleFactorX, scaleFactorY); // Draw the IMAGE CGRect myRect = CGRectMake(0, 0, imageWidth, imageHeight); [image drawInRect:myRect]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; }

Incluya el siguiente código en su clase UIView reemplazando "monk2.png" con su propio nombre de imagen.

- (void)drawRect:(CGRect)rect { UIImage *originalImage = [UIImage imageNamed:[NSString stringWithFormat:@"monk2.png"]]; CGFloat oImageWidth = originalImage.size.width; CGFloat oImageHeight = originalImage.size.height; // Draw the original image at the origin CGRect oRect = CGRectMake(0, 0, oImageWidth, oImageHeight); [originalImage drawInRect:oRect]; // Set the newRect to half the size of the original image CGRect newRect = CGRectMake(0, 0, oImageWidth/2, oImageHeight/2); UIImage *newImage = [self circularScaleAndCropImage:originalImage frame:newRect]; CGFloat nImageWidth = newImage.size.width; CGFloat nImageHeight = newImage.size.height; //Draw the scaled and cropped image CGRect thisRect = CGRectMake(oImageWidth+10, 0, nImageWidth, nImageHeight); [newImage drawInRect:thisRect]; }


Mira CGImageCreateWithMask . Crea una máscara de tu forma ovalada y luego aplícala a la imagen.


Si solo necesitas un círculo perfecto, cambiar la forma del UIImageView podría ser útil. Simplemente agregue el marco QuartzCore a su proyecto y agregue estas líneas de código en algún lugar del ciclo de vida antes de que se muestre el imageView:

#import <QuartzCore/QuartzCore.h> . . . //to crop your UIImageView to show only a circle yourImageView.layer.cornerRadius = yourImageView.frame.size.width/2; yourImageView.clipsToBounds = YES;


Tener imageView en forma ovalada no es difícil.

Puedes hacer lo siguiente

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:yourImageView.bounds]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.path = path.CGPath; yourImage.layer.mask = maskLayer;

Si el rect pasó a bezierPathWithOvalInRect es cuadrado, la imagen se recortará en círculo.

código SWIFT

let path = UIBezierPath(ovalIn: yourImageView.bounds) let maskLayer = CAShapeLayer() maskLayer.path = path.cgPath yourImage.layer.mask = maskLayer


deberías referirte a This ...

// Create the image from a png file UIImage *image = [UIImage imageNamed:@"prgBinary.jpg"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; // Get size of current image CGSize size = [image size]; // Frame location in view to show original image [imageView setFrame:CGRectMake(0, 0, size.width, size.height)]; [[self view] addSubview:imageView]; [imageView release]; // Create rectangle that represents a cropped image // from the middle of the existing image CGRect rect = CGRectMake(size.width / 4, size.height / 4 , (size.width / 2), (size.height / 2)); //oval logic goes here // Create bitmap image from original image data, // using rectangle to specify desired crop area CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect); UIImage *img = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); // Create and show the new image from bitmap data imageView = [[UIImageView alloc] initWithImage:img]; [imageView setFrame:CGRectMake(0, 200, (size.width / 2), (size.height / 2))]; [[self view] addSubview:imageView]; [imageView release];


La respuesta de SWIFT 3 proviene de @Mohammad Sadiq

let path = UIBezierPath.init(ovalIn: workingImgaeView.bounds) let maskLayer = CAShapeLayer(layer: layer) maskLayer.path = path.cgPath workingImgaeView.layer.mask = maskLayer


Para hacer una imagen RoundShape

Paso 1: en archivo .h

@property (strong, nonatomic) IBOutlet UIImageView *songImage;

Paso 2: en el archivo .m

- (void)viewDidLoad { self.songImage.layer.cornerRadius = self.songImage.frame.size.width / 2; self.songImage.clipsToBounds = YES; //To give the Border and Border color of imageview self.songImage.layer.borderWidth = 1.0f; self.songImage.layer.borderColor = [UIColor colorWithRed:249/255.0f green:117/255.0f blue:44/255.0f alpha:1.0f].CGColor; }

O para Swift

cell.songImage.layer.cornerRadius = cell.songImage.frame.size.width / 2; cell.songImage.clipsToBounds = true //To give the Border and Border color of imageview cell.songImage.layer.borderWidth = 1.0 cell.songImage.layer.borderColor = UIColor(red: 50.0/255, green: 150.0/255, blue: 65.0/255, alpha: 1.0).CGColor


RÁPIDO

var vwImage = UIImageView(image: UIImage(named: "Btn_PinIt_Normal.png")) vwImage.frame = CGRectMake(0, 0, 100, 100) vwImage.layer.cornerRadius = vwImage.frame.size.width/2


#import <QuartzCore/QuartzCore.h> CALayer *imageLayer = YourImageview.layer; [imageLayer setCornerRadius:5]; [imageLayer setBorderWidth:1]; [imageLayer setMasksToBounds:YES];

al aumentar el radio, se volverá más redondo.

Siempre que la imagen sea un cuadrado, puedes obtener un círculo perfecto tomando la mitad del ancho que el radio de la esquina:

[imageView.layer setCornerRadius:imageView.frame.size.width/2];

También necesitas agregar

[imageView.layer setMasksToBounds:YES];