选择图像的一部分(裁剪)

问题描述:

这可能不像我想的那么难,但我怎样才能选择图像的一部分?请看下面的例子:选择图像的一部分(裁剪)

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

如果你只想显示图像的一个UIImageView设置内容模式通过IB“看点填充”的中心。这将以它为中心并裁剪任何额外的东西。

或者在代码

myImageView.contentMode = UIViewContentModeScaleAspectFill; 
+0

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

this问题中偷取下面的代码并查找HitScan的答案。

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect); 
// or use the UIImage wherever you like 
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef); 

myImageView.contentMode = UIViewContentModeCenter; 
myImageView.clipsToBounds = YES; 
+0

'clipsToBounds'是这里的诀窍。感谢+1 – 2014-05-18 17:43:43

请参考下面的代码。在这里,我提供了一个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]; 
}