我有麻烦裁剪图像.对我来说,CICrop过滤器无法正常工作.如果我的CIVector x和y(起点)为0,一切正常(图像从左下角裁剪),图像被我的矩形宽度和高度裁剪,但如果CIVector起点(x和y)在我的裁剪中不是0图像变成空间(因为CICrop过滤器从左下角裁剪,无论起源是什么(x和y)).
我正在用矩形裁剪CIImage,来源:
CIVector *cropRect =[CIVector vectorWithX:150 Y:150 Z: 300 W: 300];
CIFilter *cropFilter = [CIFilter filterWithName:@"CICrop"];
[cropFilter setValue:myCIImage forKey:@"inputImage"];
[cropFilter setValue:cropRect forKey:@"inputRectangle"];
CIImage *croppedImage = [cropFilter valueForKey:@"outputImage"];
Run Code Online (Sandbox Code Playgroud)
使用CIVector X 150和Y 150输出图像:(我为了清晰起见绘制了边框)
使用CIVector X 0和Y 0输出图像:
原始图片:
我做错了什么?或者它应该这样做?
Rob*_*ger 28
您确定输出图像是您期望的尺寸吗?你是如何绘制输出图像的?
该CICrop
过滤器不降低原有图像的大小,它只是清空了你不想要的内容.
要获得您想要的结果,您可能需要这样做:
[image drawAtPoint:NSZeroPoint fromRect:NSMakeRect(150, 150, 300, 300) operation:NSCompositeSourceOver fraction:1.0];
Run Code Online (Sandbox Code Playgroud)
如果你想要一个实际的CIImage
输出而不是仅仅绘制它,只需这样做:
CIImage* croppedImage = [image imageByCroppingToRect:CGRectMake(150, 150, 300, 300)];
//you also need to translate the origin
CIFilter* transform = [CIFilter filterWithName:@"CIAffineTransform"];
NSAffineTransform* affineTransform = [NSAffineTransform transform];
[affineTransform translateXBy:-150.0 yBy:-150.0];
[transform setValue:affineTransform forKey:@"inputTransform"];
[transform setValue:croppedImage forKey:@"inputImage"];
CIImage* transformedImage = [transform valueForKey:@"outputImage"];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9939 次 |
最近记录: |