Kingfisher LocalFileImageDataProvider DownsamplingImageProcessor изменяет размер данных в памяти - PullRequest
0 голосов
/ 30 января 2019

С Kingfisher введено LocalFileImageDataProvider с 5.0.Я решил переключиться на Kingfisher, чтобы загружать изображения с моего диска вместо прямой загрузки.Как они сказали,

// Compared to loading it directly, 
// you can get benefit of using Kingfisher's extension methods, 
// as well as applying `ImageProcessor`s and storing the image to `ImageCache` of Kingfisher.

Отлично работает.так как мои образы с диска довольно большие (более 1 МБ каждый).


Итак Вопрос в том, могу ли я изменить размер изображения с помощью DownsamplingImageProcessor в UICollectionView's Cell, смогу ли я получить доступ к изображениям оригинального размера на странице «Детали изображения» для отображенияизображение в полном разрешении, используя по-прежнему ,

//The way loading image from "Image detail page"
let url = URL(fileURLWithPath: path)
let provider = LocalFileImageDataProvider(fileURL: url)
imageView.kf.setImage(with: provider)

Так что на «странице UICollectionView» я могу использовать его вот так:

let url = URL(fileURLWithPath: path)
let provider = LocalFileImageDataProvider(fileURL: url)
let processor = DownsamplingImageProcessor(size: size)
imageView.kf.setImage(with: provider, options: [.processor(processor)])

Так же, как и оникэшировал разные кеши изображений в механизм кеинга Kingfisher?Поскольку они, похоже, используют один и тот же cacheKey в LocalFileImageDataProvider.

public init(fileURL: URL, cacheKey: String? = nil) {
  self.fileURL = fileURL
  self.cacheKey = cacheKey ?? fileURL.absoluteString
}

Нужно ли настраивать cacheKey для этих двух разных страниц?

1 Ответ

0 голосов
/ 14 февраля 2019

Вам не нужно использовать другой ключ кеша.processor имеет идентификатор, и он будет использоваться для вычисления окончательного ключа кэша при хранении в кэше.Так что все должно быть хорошо для вас (как ваш фрагмент кода).

Вы можете просто распечатать размер изображения в обработчике завершения метода настройки изображения, чтобы подтвердить загружаемое изображение.

imageView.kf.setImage(with: url) { result in
    switch result {
    case .success(let value):
        // The image was set to image view:
        print(value.image.size)
    //...

...