Справочные данные из изображения актива - PullRequest
0 голосов
/ 03 февраля 2019

Я узнал, что могу ссылаться на данные изображения с URL-адреса, чтобы уменьшить масштаб изображения перед его декодированием, что экономит огромный объем памяти на устройстве:

    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)
}

Теперь я попытался выяснить,это также возможно с изображениями из ресурса, но я пока не нашел никакого решения.Поскольку вы не можете инициализировать изображения как NSDataAsset для ссылки на его данные, мне интересно, есть ли другая возможность.

Я уже пытался загрузить изображение из ресурса и преобразовать его в данные с помощью let imageData = UIImage(named: "imageName")?.pngData(), но я узнал,что все изображение сначала загружается в память.Так что это не дает мне никакого преимущества.

...