Ios 裁剪图像。裁剪的图像不正确
我在屏幕上有一个UIImageView。它显示具有多种颜色的图像。当我单击图像时,它会裁剪图像的一小部分,并将裁剪后的图像设置为新的小UIImageView。由于某些原因,裁剪后的图像总是错误的。查看下面的屏幕截图: 以下是touchesBegin的完整代码:Ios 裁剪图像。裁剪的图像不正确,ios,Ios,我在屏幕上有一个UIImageView。它显示具有多种颜色的图像。当我单击图像时,它会裁剪图像的一小部分,并将裁剪后的图像设置为新的小UIImageView。由于某些原因,裁剪后的图像总是错误的。查看下面的屏幕截图: 以下是touchesBegin的完整代码: -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { CGPoint location = [[touches anyObject] locatio
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint location = [[touches anyObject] locationInView:self.imageView];
UIImage *originalImage = self.imageView.image;
NSLog(@"x = %f, y = %f",location.x,location.y);
CGRect cropRegion = CGRectMake(location.x, location.y, 10, 10);
CGImageRef subImage = CGImageCreateWithImageInRect(originalImage.CGImage, cropRegion);
UIImage *croppedImage = [UIImage imageWithCGImage:subImage scale:originalImage.scale orientation:originalImage.imageOrientation];
[self.previewImageView setImage:croppedImage];
CGImageRelease(subImage);
}
最可能的解释是图像大小大于视图大小,因此图像已缩小以适合视图。结果是视图坐标与图像坐标不匹配,因此,
locationInView
返回的点不能直接用于CGImageCreateWithImageInRect
要解决此问题,您需要根据
self.imageView.bounds.size
和originalImage.size
确定x和y比例因子,然后相应地缩放位置。只是一个猜测,但是,如果您比较原始图像的大小和UIImageView的大小,您可能会发现,与原始图像上的坐标相比,“位置”点很可能不在您接触的点上。图像可能正在缩放以适应UIImageView,因此您需要调整坐标以获得正确的位置。@BrianShamblen,那么您如何做到这一点呢?答对了!你是100%正确的先生:)我挠了将近一个小时的脑袋:)