2012-06-14 15 views
14

Ci scusiamo per questa domanda, ma ho cercato un sacco di discussioni qui in S.O. e non ho trovato nulla.Come ritagliare un quadrato centrale in una UIImmagine?

La domanda è: come ritagliare un quadrato centrale in una UIImmagine?

Ho provato il codice muggito ma senza successo. Il ritaglio avviene, ma nell'angolo in alto a sinistra.

-(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; 
} 

risposta

15

aggiungere più informazioni, sto usando questo 'raccolto', dopo una cattura foto.

Dopo alcuni test, ho trovato qualcosa che funzionava.

// 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); 
} 
Problemi correlati