2010-02-09 4 views
5

Probabilmente non è così difficile come credo, ma come posso selezionare una parte di un'immagine? Si consideri il seguente esempio:seleziona parte dell'immagine (ritaglio)

alt text http://img683.imageshack.us/img683/2680/imagepart.jpg

L'area grigia è un'immagine in formato PNG o JPG formato, ora voglio per selezionare l'area px 80x80 rosso da esso. L'area rossa dovrebbe essere visualizzata, il resto no. Ho provato numerosi approcci:

  • Fai clipsToBounds di UIImageView su YES e il cercare di compensare l'immagine (non funziona)
  • clip la vista superiore (non funziona)

Ho anche dato un'occhiata alle funzioni di disegno, tuttavia non ho ancora lavorato con questi e mi è sembrato un po 'esagerato. C'è un modo ovvio per fare ciò che voglio fare che mi sto perdendo? Non voglio ridimensionare l'immagine, semplicemente ritagliata.

Grazie per il vostro tempo!

+0

+1 per una grande spiegazione della tua domanda. – kubilay

risposta

4

Se solo si desidera visualizzare il centro dell'immagine un un UIImageView impostare la modalità di contenuti a "Aspect Fill" via IB. Questo lo centrerà e taglierà qualsiasi cosa in più.

o nel codice

myImageView.contentMode = UIViewContentModeScaleAspectFill; 
+0

Questo non funziona .. –

7

Rubato il codice di seguito dalla domanda this e cercare la risposta di HitScan.

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect); 
// or use the UIImage wherever you like 
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef); 
3
myImageView.contentMode = UIViewContentModeCenter; 
myImageView.clipsToBounds = YES; 
+0

'clipsToBounds' è il trucco qui. Grazie +1 –

1

Fare riferimento al codice qui sotto. Qui sto fornendo un imageview e dividendo lo stesso in due immagini uguali.

- (void)splitImageView:(UIImageView*)imgView{ 

UIImage *image = imgView.image; 
CGRect rectForDrawing = CGRectMake(0, 0, imgView.frame.size.width/2, imgView.frame.size.height); 

CGRect leftRect = CGRectMake(0, 0, imgView.frame.size.width/2, imgView.frame.size.height); 
CGRect rightRect = CGRectMake(imgView.frame.size.width/2, 0, imgView.frame.size.width/2, imgView.frame.size.height); 


CGImageRef leftReference = CGImageCreateWithImageInRect([image CGImage], leftRect); 
CGImageRef rightReference = CGImageCreateWithImageInRect([image CGImage], rightRect); 

UIGraphicsBeginImageContextWithOptions(rectForDrawing.size, NO, 0); 
    CGContextRef con = UIGraphicsGetCurrentContext(); 
    CGContextDrawImage(con, rectForDrawing,flip(leftReference)); 
    imgViewLeft = [[UIImageView alloc] initWithImage:UIGraphicsGetImageFromCurrentImageContext()]; 
    imgViewLeft.frame = CGRectMake(imgView.frame.origin.x, imgView.frame.origin.y, 
           imgView.frame.size.width/2, imgView.frame.size.height); 

    CGContextDrawImage(con, rectForDrawing,flip(rightReference)); 
    imgViewRight = [[UIImageView alloc] initWithImage:UIGraphicsGetImageFromCurrentImageContext()]; 
    imgViewRight.frame = CGRectMake(imgView.frame.origin.x+imgView.frame.size.width/2, imgView.frame.origin.y, 
           imgView.frame.size.width/2, imgView.frame.size.height); 


UIGraphicsEndImageContext(); 


[self.view addSubview:imgViewLeft]; 
[self.view addSubview:imgViewRight]; 
}