我想用这段代码掩盖图像:
CGFloat plx = inputImage.size.width/_imageView.frame.size.width;
CGFloat ply = inputImage.size.height/_imageView.frame.size.height;
CGFloat radius = MIN(_postionView.frame.size.width * plx, _postionView.frame.size.height * ply)/1.5;
CIVector *cen = [CIVector vectorWithX:_postionView.center.x * plx Y:_postionView.center.y * ply];
CIFilter *radialGradient = [CIFilter filterWithName:@"CIRadialGradient" keysAndValues:
@"inputRadius0", [NSNumber numberWithFloat:radius],
@"inputRadius1", [NSNumber numberWithFloat:radius + 1.0f],
@"inputColor0", [CIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:1.0],
@"inputColor1", [CIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0],
@"inputCenter", cen,
nil];
CIImage *circleImage = [radialGradient valueForKey:kCIOutputImageKey];
_postionView是我的uiimageview。它没有得到正确的位置。我猜这是因为uikit坐标系和石英不同的坐标系。有什么想法吗?
答案 0 :(得分:0)
已经解决,以下是解决代码:
CGPoint touchPoint = [touch locationInView:self.view];
ScaleX = _imageView.image.size.width/self.view.frame.size.width;
ScaleY = _imageView.image.size.height/self.view.frame.size.height;
CGFloat imgX;
CGFloat imgY;
imgX = touchPoint.x * ScaleX;
imgY = _imageView.image.size.height - touchPoint.y * ScaleY;
VICPoint = CGPointMake(imgX, imgY);
CIImage *maskImage = nil;
CIVector *cen;
cen = [CIVector vectorWithX:VICPoint.x Y:VICPoint.y];
CGFloat radius = MIN(80 * ScaleX, 80 * ScaleY)/1.5;
CIFilter *radialGradient = [CIFilter filterWithName:@"CIRadialGradient" keysAndValues:
@"inputRadius0", [NSNumber numberWithFloat:radius],
@"inputRadius1", [NSNumber numberWithFloat:radius + 1.0f],
@"inputColor0", [CIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:1.0],
@"inputColor1", [CIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0],
@"inputCenter", cen,
nil];
CIImage *circleImage = [radialGradient valueForKey:kCIOutputImageKey];