2012-07-12 1 views
5

iOS에서 이미지 포맷 간의 변환이 왜 필요한지 혼란 스럽습니다. 예를 들어 jpg를 UIImage에로드 한 다음 얼굴 인식을하고 싶다면 CIImage를 만들어 CIDetector에 전달해야합니다. 이것은 메모리와 퍼포먼스 모두에서 히트를 의미하지 않습니까?필요한 이미지 형식간에 변환이 너무 많은 이유는 무엇입니까? (UIImage, CGImage, CIImage)

코어 그래픽, 코어 이미지 및 UIKit (그리고 아마도 OpenGL ES 사이에있는 기존의 것입니까? 그렇지만 작동하지 않습니다)? 히트는 전반적으로 사소한 것입니까?

내가해야 할 일을하겠다.하지만 이것에 대해 더 알고 싶다. 또한 때로는 변환 작업을 수행하면서 형식 간의 차이점에 대해서도 궁금해합니다.


업데이트

좋아 - 그래서 난 그냥 이러한 형식 (또는 이러한 형식의 혼란 ...)를 통해 내 혼란 다시 박았 구만 얻었다. 30 분을 낭비했다. 로컬 이미지의 얼굴에

테스트, 나는에 필요한 CIImage을 만들어 : 여기에 내가 무엇을하고 있었는지입니다.

CIImage *ciImage = [image CIImage]; 

다시 상관없이 내가 건네 어떤 방향으로 어떤 기능을 점점하지 있었다 I 이 특정 이미지는 CIImage 형식으로 문제가 발생한 전에 CIDetectorTypeFace과 작동했습니다. 다음과 같이 CCImage를 만들려고 시도했습니다.

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

및 얼굴 인식이 잘 작동합니다. 아아! 나는 [image CIImage]으로 결과 CIImage가 0이 아니 었음을 확인했다. 그래서 나는 혼란 스럽다. 첫 번째 방법은 포인터를 얻는 반면 두 번째 방법은 새로운 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는 모두 근본적으로 통일 된 이미지 형식이 될 수없는 근본적으로 다른 세 가지 작업을 수행합니다. 또한 이러한 프레임 워크는 잘 협력합니다. 즉, 변환은 가능한 한 신속하고 최적화되어야하지만 물론 이미지 처리는 항상 상대적으로 계산 비용이 많이 드는 작업입니다.