Swift: Как понять, что загруженное изображение пусто? - PullRequest
1 голос
/ 16 мая 2019

Я загружаю изображение с зимородка, но иногда изображение существует, но пустое.

Пример: Образец изображения Как я могу обнаружить такие изображения?

Мой метод загрузки:

func downloadFrom(link: String, contentMode mode: UIView.ContentMode = .scaleAspectFit, rounded: Bool = false, loader: IndicatorType = .none) {
        self.kf.indicatorType = loader
        guard let url = URL(string: link) else {
            return
        }
        let img = self.image

        if(rounded) {
            let roundedProcessor = RoundCornerImageProcessor(cornerRadius: 100, targetSize: CGSize(width: 200, height: 200), roundingCorners: .all, backgroundColor: nil)
            self.kf.setImage(with: url, placeholder: img, options: [.processor(roundedProcessor)], completionHandler: {
                (image, error, cacheType, imageUrl) in

                if (error == nil) {
                    DispatchQueue.main.async() { () -> Void in
                        if (self.contentMode != UIView.ContentMode.scaleAspectFit) {
                            self.contentMode = mode
                        }
                    }
                }
            })
        } else {
            self.kf.setImage(with: url, placeholder: img, completionHandler: {
                (image, error, cacheType, imageUrl) in

                if (error == nil) {
                    DispatchQueue.main.async() { () -> Void in
                        if (self.contentMode != UIView.ContentMode.scaleAspectFit) {
                            self.contentMode = mode
                        }
                    }
                }
            })
        }
    }

Ответы [ 2 ]

1 голос
/ 16 мая 2019

См. Следующий код, Проверьте размер изображения после получения изображения с сервера. Если размер файла равен 0, тогда изображение пустое.

self.kf.setImage(with: url, placeholder: img, options: [.processor(roundedProcessor)], completionHandler: {
                (image, error, cacheType, imageUrl) in

  if let imageData = UIImagePNGRepresentation(image) {
     let bytes = imageData.count
        if  bytes > 0 {
            //getting image successfully
        }else{
            //Image size is 0 (image is empty)
        }
  }else{
    //Not getting image
  }
})
0 голосов
/ 16 мая 2019

попробуйте

 print(imageUrl.absoluteString) // check image file name at the end of url
...