核心图像:使用CICrop后,应用合成filter不排队

我正在使用CICrop通过切断图像的顶部和底部来裁剪图像到一定的大小。

之后,我应用CIMultiplyCompositing滤镜之类的东西,将裁剪的图像与其他图像组合在一起。

两幅图像的大小相同,但结果显示两幅图像没有alignment。

所以,我检查了以下内容:

NSLog(@"image after crop: %g, %g, %g, %g", imageToFilter.extent.origin.x, imageToFilter.extent.origin.y, imageToFilter.extent.size.width, imageToFilter.extent.size.height); NSLog(@"second image: %g, %g, %g, %g", secondImage.extent.origin.x, secondImage.extent.origin.y, secondImage.extent.size.width, secondImage.extent.size.height); 

这显示裁剪图像的origin.y有我看到的偏移量(使用CICrop的结果):

 image after crop: 0, 136, 3264, 2176 second image: 0, 0, 3264, 2176 

那么,有没有办法让我重置裁剪图像“范围”rect,以使origin.y为零? 检查CIImage的文档,“extent”是一个只读属性。

或者我将不得不做一些非常低效的转换到另一个图像types/原始数据,然后返回到CIImage?

感谢您的任何build议。

我想出了这个答案…这是一个容易的。 我只需要在裁剪之后在CIImage上应用“翻译”转换,如下所示:

 imageToFilter = [imageToFilter imageByApplyingTransform:CGAffineTransformMakeTranslation(0, -imageToFilter.extent.origin.y)]; 

这有效地将其y原点回到0。