2012-07-12 28 views
5

我很困惑,爲什麼iOS需要這麼多的圖片格式轉換。例如,如果我將一個jpg加載到UIImage中,然後想對它進行人臉檢測,則需要創建一個CIImage以傳遞給CIDetector。這不代表內存和性能方面的熱門嗎?爲什麼需要這麼多的圖像格式轉換? (UIImage,CGImage,CIImage)

這是核心圖形,核心圖像和UIKit之間的一些遺留問題(可能還有openGL ES,但我沒有使用它)?總的來說,這是不是很重要?

我會做我需要做的,但我想了解更多這需要。另外,我遇​​到了一些問題,有時候會進行轉換,並會糾正格式之間的差異。


更新

好了 - 所以我只是用了我的困惑在這些格式(或這些格式的混亂...)再次丁當作響。浪費了半個小時。下面是我在做什麼:

測試在一個地方形象的面孔,我創建所需的CIImage有:

CIImage *ciImage = [image CIImage]; 

,並沒有得到任何功能回到不管我在傳遞什麼方向我知道這個特殊的圖像已與CIDetectorTypeFace之前,我遇到了CIImage格式的麻煩。嘗試創建像這樣的CCImage:

CIImage *ciImage = [CIImage imageWithCGImage:image.CGImage]; 

和人臉檢測工作正常。 Arrgh!我確定[image CIImage]由此產生的CIImage不是零。所以我很困惑。第一種方法只是獲得一個指針,而第二種方法創建一個新的CIImage。這是否有所作爲?

挖掘到UIImage.h文件我看到以下內容:

// returns underlying CGImageRef or nil if CIImage based 
@property(nonatomic,readonly) CGImageRef CGImage; 

// returns underlying CIImage or nil if CGImageRef based 
@property(nonatomic,readonly) CIImage  *CIImage; 

所以我想這是關鍵 - 開發者當心:測試無...

回答

0

的原因是概念。所有的UIKit,CoreGraphics和CoreImage都做了三件完全不同的事情,那就是不能有'大中央統一圖像格式'。此外,這些框架合作良好;也就是說,轉換應該儘可能優化並且儘可能快,但是當然圖像處理總是相對計算量大的操作。

相關問題