2011-11-17 57 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