문제

나는 많은 Calayers를 사용하여 Googlemaps (세부 사항이 더 많거나 적은 동일한 이미지의 다른 버전)와 달리 타일 기반 이미지를 만듭니다.

이 작업을 수행하는 코드는 다음과 같습니다.

UIImage* image = [self loadImage:obj.fileName zoomLevel:obj.zoomLevel];
[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];
obj.layerToAddTo.contents = [image CGImage];
[CATransaction commit];

나는 게으르기 때문에 CoreGraphics를 사용하여 파일에서 cgimage를로드하는 것 같은 느낌이 들지 않습니다. 그러나 큰 성능 향상이 있다면! loadImage는 문자열을 관리하여 상기 이미지를로드하기위한 올바른 경로를 가져 오며 OBJ는이 스레드에 필요한 모든 정보를 보유하는 nsobject-struct입니다.

돕다?

도움이 되었습니까?

해결책

큰 성능 향상은 없습니다. 이미지를로드하기 위해 Uiimage를 통해 가면 캐싱의 모든 이점을 얻을 수 있으며 다양한 Calayers와 함께 사용하는 매우 빠른 동물이 될 것입니다.

다른 팁

방금 이것을 시도하고 순수한 코어 그래픽을 사용하여 UIIMage를 사용하지 않고 이미지를로드하면 한 번에 많은 이미지를로드 할 때 눈에 띄는 속도가 향상되었습니다.

"방금 이것을 시도하고 순수한 코어 그래픽을 사용하여 UIIMage를 사용하지 않고 이미지를로드하기 위해 한 번에 많은 이미지를로드 할 때 눈에 띄는 속도가 향상되었습니다."

UIIMAGE 사용을 어떻게 피했습니까? 또는 더 정확하게는 uiimage를 통과하지 않고 이미지 파일을 CoreGraphics에 직접로드합니까?

사용하지 않는 이유 중 하나 UIImage -imageNamed: 이미지를로드하는 것은 내부 캐시에 저장되고 메모리 상황에서 캐시가 지워지지 않는다는 것입니다.

나는 명확한 대답이 없지만 cgimage를 사용할 때보 다 Uiimage를 사용할 때 느린로드 시간을 볼 수 있다고 생각합니다. CGIMAGE를 사용하면 생성 중에 이미지 유형 (JPG 또는 PNG)을 지정하지만 UIIMAGE를 사용하면 객체 유형을 동적으로 결정해야합니다. 물론, 이것은 아마도 이미지 파일의 처음 몇 바이트를 보는 것만 큼 간단하지만 그렇지 않을 수도 있습니다.

이미지가 실제로 사용되면 내부적으로 UIIMAGE를 나타내는 cgimage를 사용하는 것과 직접 만든 cgimage를 사용하는 것에 전혀 차이가 있다고 상상하지 못할 것입니다. 나는 그들이 정확히 동등 할 것이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top