2011-11-17 46 views
3

我使用CICrop通过切除图像的顶部和底部来将图像裁剪为特定尺寸。核心图像:使用CICrop后,应用合成滤镜不排队

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

两幅图像的大小相同,但结果显示两幅图像没有对齐......一幅图像被偏移。

所以,我检查以下内容:

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 

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

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

感谢您的任何建议。

回答

6

我想出了答案......这很简单。我只是需要应用“翻译”的CIImage变换裁剪之后,像这样:

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

这实际上其移动y原点回0