¿Cómo recortar un cuadrado central en un UIImage?

Perdón por esta pregunta, pero busqué muchos hilos aquí en SO y no encontré nada.

La pregunta es: ¿cómo recortar un cuadrado central en un UIImage?

Probé el código a continuación, pero sin éxito. Ocurre el recorte, pero en la esquina superior izquierda.

-(UIImage*)imageCrop:(UIImage*)original { UIImage *ret = nil; // This calculates the crop area. float originalWidth = original.size.width; float originalHeight = original.size.height; float edge = fminf(originalWidth, originalHeight); float posX = (originalWidth - edge) / 2.0f; float posY = (originalHeight - edge) / 2.0f; CGRect cropSquare = CGRectMake(posX, posY, edge, edge); // This performs the image cropping. CGImageRef imageRef = CGImageCreateWithImageInRect([original CGImage], cropSquare); ret = [UIImage imageWithCGImage:imageRef scale:original.scale orientation:original.imageOrientation]; CGImageRelease(imageRef); return ret; } 

Agregando más información, estoy usando este 'recorte' después de una captura de fotos.

Después de algunas testings, encontré algo que funcionó.

 // If orientation indicates a change to portrait. if(original.imageOrientation == UIImageOrientationLeft || original.imageOrientation == UIImageOrientationRight) { cropSquare = CGRectMake(posY, posX, edge, edge); } else { cropSquare = CGRectMake(posX, posY, edge, edge); } 
    Intereting Posts