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;
그래서 나는 그 키 추측 - 개발자주의 : 테스트를 전무 위해 ... 이유는에