- (void)resizeImageAtPath:(NSString *)imagePath {
// Create the image source (from path)
CGImageSourceRef src = CGImageSourceCreateWithURL((__bridge CFURLRef) [NSURL fileURLWithPath:imagePath], NULL);
// To create image source from UIImage, use this
// NSData* pngData = UIImagePNGRepresentation(image);
// CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)pngData, NULL);
// Create thumbnail options
CFDictionaryRef options = (__bridge CFDictionaryRef) @{
(id) kCGImageSourceCreateThumbnailWithTransform : @YES,
(id) kCGImageSourceCreateThumbnailFromImageAlways : @YES,
(id) kCGImageSourceThumbnailMaxPixelSize : @(640)
};
// Generate the thumbnail
CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(src, 0, options);
CFRelease(src);
// Write the thumbnail at path
CGImageWriteToFile(thumbnail, imagePath);
}
대용량 이미지를 resize를 할 경우 메모리에 모든 UIImage객체를 올린 뒤 draw하는 방식을 사용하게 되면 resize를 할 경우 메모리 문제에 종종 생기게 된다
파일로 저장된 대용량 이미지를 파일 상태에서 바로 resize한 후 저장하는 코드를 사용할 경우 메모리 문제를 해결 할 수 있다
'iOS' 카테고리의 다른 글
objective C block 순환참조에 대해... (0) | 2016.12.09 |
---|---|
HTML 태그를 AttributeString으로 변환하기 (0) | 2016.11.08 |
NSURLString 사용시 주의점 (0) | 2016.09.29 |
스토리보드에서 Segue호출 유의사항 (0) | 2016.09.29 |
UIActivityIndicatorView 사용시 주의점 (0) | 2016.09.23 |