Загрузите UIImage из локального каталога - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь загрузить UIImage из каталога документов, как показано ниже:

    var documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    documentsPath.append("/filescheme/filescheme/images/3.png")
    let url = URL(fileURLWithPath: documentsPath)
    do {
        let imageData = try Data.init(contentsOf: url)
        let image = UIImage(data: imageData)
    } catch {
        print(error.localizedDescription)
    }

и не удалось создать данные из каталога, ошибка: «Файл« 3.png »не может быть открыт, потому что такого файла нет».

Screenshot of URL path

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Вы можете использовать функцию loadImage и передать путь к изображению, он проверяет, существует ли imageFile на пути, и возвращает UIImage из заданного пути, используя метод contentsOfFile из String

func loadImage(at path: String) -> UIImage? {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentPath = paths[0]
    let imagePath = documentPath.appending(path)
    guard fileExists(at: imagePath) else {
        return nil
    }
    guard let image = UIImage(contentsOfFile: imagePath) else {
        return nil
    }
    return image
}

func fileExists(at path: String) -> Bool {
    return FileManager.default.fileExists(atPath: path)
}

Использование:

loadImage(at: "/filescheme/filescheme/images/3.png")
0 голосов
/ 30 апреля 2018

Я обнаружил проблему, папка была названа "fileScheme", а не "filescheme", поэтому,

var documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
documentsPath.append("/filescheme/fileScheme/images/3.png")
let image = UIImage(contentsOfFile: documentsPath) // it works
0 голосов
/ 30 апреля 2018

Попробуйте это

var documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
documentsPath.append("/filescheme/filescheme/images/3.png")
let image = UIImage(contentsOfFile: documentsPath)

Вы можете напрямую использовать documentsPath без преобразования его в данные

...