Swift 3.0 запись изображения в каталог

#ios #iphone #swift #xcode #swift3

#iOS #iPhone #swift #xcode #swift3

Вопрос:

У меня есть простой ImagePicker для пользователя способ выбрать или сделать снимок профиля. Я хочу сохранить это image Home Directory для удобства загрузки позже.

Проблема заключается в том, что тип изображения не задан.

     //Save Image
    _ = PPimagePicked.image
    let imageData = UIImageJPEGRepresentation(PPimagePicked.image!, 0.6)
    let compressedJPGImage = UIImage(data: imageData!)
    UIImageWriteToSavedPhotosAlbum(compressedJPGImage!, nil, nil, nil)
    // Get Document Root Path
    let path = URL(fileURLWithPath: NSHomeDirectory()).appendingPathComponent("Documents/profile.jpg")
    do {
        //Save image to Root
        try imageData?.write(to: path, options:  .atomic)
        print("Saved To Root")
    } catch let error {
        print(error)
    }
  

Точная ошибка :

«[Общий] Создание формата изображения с неизвестным типом является ошибкой»

Ответ №1:

Пожалуйста, попробуйте этот код, я использую его в swift 2.2. Приведенный ниже метод включает в себя как UIImageJPEGRepresentation, UIImagePNGRepresentation

 if let image = UIImage(named: "example.png") {
    if let data = UIImageJPEGRepresentation(image, 0.8) {
        let filename = getDocumentsDirectory().appendingPathComponent("copy.png")
        try? data.write(to: filename)
    }
}

func getDocumentsDirectory() -> URL {
    let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
    let documentsDirectory = paths[0]
    return documentsDirectory
}

if let image = UIImage(named: "example.png") {
    if let data = UIImagePNGRepresentation(image) {
        let filename = getDocumentsDirectory().appendingPathComponent("copy.png")
        try? data.write(to: filename)
    }
}
  

Комментарии:

1. значение UIImage не имеет члена ‘write’

2. @user1514436 метод ‘write’ доступен для NSData, а не для UIImage, возможно, вы используете функцию записи в UIImage

3. Это не позволит мне использовать его в UIImage. Я думаю, что в моем коде что-то еще отсутствует…

Ответ №2:

попробуйте преобразовать изображение в данные изображения

        let imageCapture = UIImage(data: dataImage)!
        UIImageWriteToSavedPhotosAlbum((image: imageCapture), nil, nil, nil)