2010-02-09 169 views
5

這可能不像我想的那麼難,但我怎樣才能選擇圖像的一部分?請看下面的例子:選擇圖像的一部分(裁剪)

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

灰色區域是在PNG或JPG格式的圖像,現在我想從它選擇紅色80x80像素面積。應顯示紅色區域,其餘不是。我曾嘗試各種不同的方法:

  • 製作的UIImageView的clipsToBounds爲YES和嘗試,以抵消圖像(不工作)
  • 剪輯上視圖(不工作)

我也看了一下繪圖功能,但是我還沒有用過這些功能,這對我來說似乎有點牽強。有沒有什麼明顯的方式做我想做的事情,我錯過了什麼?我不希望圖像被調整大小,只是剪裁。

謝謝你的時間!

+0

+1對您的問題有很好的解釋。 – kubilay 2012-09-04 17:28:56

回答

4

如果你只想顯示圖像的一個UIImageView設置內容模式通過IB「看點填充」的中心。這將以它爲中心並裁剪任何額外的東西。

或者在代碼

myImageView.contentMode = UIViewContentModeScaleAspectFill; 
+0

這是行不通的。 – 2012-11-27 05:59:39

7

this問題中偷取下面的代碼並查找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'是這裏的訣竅。感謝+1 – 2014-05-18 17:43:43

1

請參考下面的代碼。在這裏,我提供了一個imageview,並在兩個相同的圖像中分割相同的圖像。

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