현재 다음 코드를 사용하여 iOS 응용 프로그램의 ALAsset에서 UIImage를 가져옵니다.CGImageRef의 최대 크기를 ALAssetRepresentation에서 설정하십시오.
ALAssetRepresentation *rep = [self.asset defaultRepresentation];
CGImageRef ref = [rep fullResolutionImage];
ALAssetOrientation orientation = [[self.asset valueForProperty:@"ALAssetPropertyOrientation"] intValue];
UIImage *image = [UIImage imageWithCGImage:ref scale:1.0 orientation:(UIImageOrientation)orientation];
이미지가 상당히 작 으면 (예 : 장치의 카메라로 촬영 한 경우) 매우 잘 작동합니다. 이미지 (6000px^2 등) 너무 큰 그러나 경우 앱이이 단계에서 메모리가 부족합니다
CGImageRef ref = [rep fullResolutionImage];
내가 응용 프로그램이 충돌하기 전에이 상태를 감지하거나 싶습니다 (이상적) 설정 돌려 주어지는 이미지의 최대 사이즈
저는 fullScreenImage
이 더 작은 이미지를 반환 하겠지만, 확대/축소를 위해 이미지에서 훨씬 높은 해상도가 필요하다는 것을 알고 있습니다.
JPG와 같이 압축률이 높은 형식은 압축 된 크기가 작지만 픽셀 단위로 크기가 크면 메모리가 너무 많이 소모 될 수 있으므로 자산의 바이트 크기를 사용하면 신뢰할 수 없습니다 (낮은 세부 이미지, 압축률이 높은 이미지).
이미지의 크기를 가져 와서이 상황을 미리 감지하여로드를 취소하고 오류를 표시하거나 큰 자산의 작은 버전을 얻는 방법에 대한 정보는 크게 감사하겠습니다.
감사합니다. 문제는 압축 된 이미지의 파일 크기가 부적절하다는 것입니다. 예를 들어, 흰색 만 포함 된 6000px * 6000px의 PNG는 바이트 크기가 매우 작지만보기 위해 압축되지 않으면 매우 커집니다. – 0x90
투영 된 픽셀 크기를 얻으려고하므로 – markhunte
예. 이 질문을 명확하게하기 위해 업데이트했습니다. 그것을 지적 주셔서 감사합니다. :) – 0x90