Вы должны проверить WWDC Session 219 - Лучшие практики для изображений и графики .Первая треть содержит полезную информацию о том, как оптимизировать графику, особенно объем памяти.
Одним из предложенных способов является метод понижающей дискретизации.Вот фрагмент кода:
func downsample(imageAt imageURL: URL, to pointSize: CGSize, scale: CGFloat) -> UIImage {
let imageSourceOptions = [kCGImageSourceShouldCache: false] as CFDictionary
let imageSource = CGImageSourceCreateWithURL(imageURL as CFURL, imageSourceOptions)!
let maxDimensionInPixels = max(pointSize.width, pointSize.height) * scale
let downsampleOptions =
[kCGImageSourceCreateThumbnailFromImageAlways: true,
kCGImageSourceShouldCacheImmediately: true,
kCGImageSourceCreateThumbnailWithTransform: true,
kCGImageSourceThumbnailMaxPixelSize: maxDimensionInPixels] as CFDictionary
let downsampledImage = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, downsampleOptions)!
return UIImage(cgImage: downsampledImage)
}
При пониженной выборке размер памяти изображения будет уменьшаться пропорционально изменению уменьшенного размера.Кроме того, всегда существует компромисс между качеством изображения и объемом памяти, и результат сильно зависит от алгоритма сжатия и настроек сжатия.
Этот поток переполнения стека , и особенно этот ответ предоставляет несколько советов.
Надеюсь, это поможет.