Мне нужно сохранить UIImage в файл.Для этой цели я использую следующий код:
@IBAction func saveTextImage(_ sender: UIBarButtonItem) {
let imageToSave = UIImage.imageWithLabel(textField: showRanjana)
guard let fileURL = TypeRanjanaViewController.storeImageToDocumentDirectory(image: imageToSave, fileName: "Ranjana"+String(currentTimeInMilliSeconds())+".png") else {
return
}
print(fileURL)
showSavedFile(fileUrlToAshow: fileURL)
guard let uiImage = UIImage(contentsOfFile: fileURL.absoluteString) else {
print("Image is nil")
return
}
testImageView.image = uiImage
}
public static func storeImageToDocumentDirectory(image: UIImage, fileName: String) -> URL? {
guard let data = image.pngData() else {
return nil
}
let fileURL = self.fileURLInDocumentDirectory(fileName)
do {
try data.write(to: fileURL)
return fileURL
} catch {
return nil
}
}
public static var documentsDirectoryURL: URL {
return FileManager.default.urls(for:.documentDirectory, in: .userDomainMask)[0]
}
public static func fileURLInDocumentDirectory(_ fileName: String) -> URL {
return self.documentsDirectoryURL.appendingPathComponent(fileName)
}
Вот расширение для получения изображения из UiLabel
extension UIImage {
class func imageWithLabel(textField: UITextField) -> UIImage {
UIGraphicsBeginImageContextWithOptions(textField.bounds.size, false, 0.0)
textField.layer.render(in: UIGraphicsGetCurrentContext()!)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return img!
}
}
IЯ могу сгенерировать изображение из uiImage и сохранить его с помощью функции saveTextImage (..).Здесь fileURL возвращает URL для изображения.Но я не могу найти изображение при создании изображения, т. Е. Он возвращает ноль.Нужны ли нам разрешения для хранения / получения изображения?Как извлечь изображение из URL / проверить, сохранено ли изображение на диске?