选择图像的一部分(裁剪)
这可能不像我想的那么难,但我怎样才能选择图像的一部分?请看下面的例子:选择图像的一部分(裁剪)
alt text http://img683.imageshack.us/img683/2680/imagepart.jpg
灰色区域是在PNG或JPG格式的图像,现在我想从它选择红色80x80像素面积。应显示红色区域,其余不是。我曾尝试各种不同的方法:
- 制作的UIImageView的clipsToBounds为YES和尝试,以抵消图像(不工作)
- 剪辑上视图(不工作)
我也看了一下绘图功能,但是我还没有用过这些功能,这对我来说似乎有点牵强。有没有什么明显的方式做我想做的事情,我错过了什么?我不希望图像被调整大小,只是剪裁。
谢谢你的时间!
如果你只想显示图像的一个UIImageView
设置内容模式通过IB“看点填充”的中心。这将以它为中心并裁剪任何额外的东西。
或者在代码
myImageView.contentMode = UIViewContentModeScaleAspectFill;
这是行不通的。 – 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;
'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];
}
+1对您的问题有很好的解释。 – kubilay 2012-09-04 17:28:56