2010-02-09 37 views
5

Điều này có lẽ không khó như tôi nghĩ, nhưng làm cách nào tôi có thể chọn một phần của hình ảnh? Hãy xem xét ví dụ sau:chọn một phần của hình ảnh (cắt)

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

Các vùng màu xám là một hình ảnh trong PNG hoặc Format JPG, bây giờ tôi muốn chọn vùng px 80x80 đỏ từ nó. Vùng màu đỏ sẽ được hiển thị, phần còn lại thì không. Tôi đã thử nhiều phương pháp:

  • Hãy clipsToBounds của UIImageView YES và cố gắng để bù đắp cho hình ảnh (không hoạt động)
  • Clip quan điểm trên (không hoạt động)

Tôi cũng đã xem xét các chức năng vẽ, nhưng tôi đã không làm việc với những điều này được nêu ra và nó có vẻ hơi xa vời với tôi. Có cách nào rõ ràng để làm những gì tôi muốn làm mà tôi đang bỏ lỡ không? Tôi không muốn thay đổi kích thước hình ảnh, chỉ cần cắt bớt.

Cảm ơn bạn đã dành thời gian!

+0

+1 để giải thích rõ về câu hỏi của bạn. – kubilay

Trả lời

4

Nếu bạn chỉ muốn hiển thị trung tâm của hình ảnh một một UIImageView thiết lập các chế độ nội dung để "Aspect Điền" qua IB. Điều đó sẽ tập trung nó và cắt bỏ bất cứ điều gì thêm.

Hoặc trong mã

myImageView.contentMode = UIViewContentModeScaleAspectFill; 
+0

Điều này không hoạt động .. –

7

Lấy mã bên dưới từ this câu hỏi và tìm câu trả lời của 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

'clipToBounds' là mẹo ở đây. Cảm ơn +1 –

1

Tham khảo các mã dưới đây. Ở đây tôi đang cung cấp một số lần xem hình ảnh và chia nhỏ trong hai lần xem bằng nhau.

- (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]; 
} 
Các vấn đề liên quan