Преобразование UIImage в NSData и преобразование обратно в UIImage в Swift?

Я пытаюсь сохранить UIImage to NSData а потом прочитала NSData вернуться к новому UIImage в Swift. Чтобы преобразовать UIImage to NSData Я использую следующий код:

let imageData: NSData = UIImagePNGRepresentation(myImage)

как преобразовать imageData (т. е. NSData) в новую UIImage?

6 ответов


UIImage(data:imageData,scale:1.0) предполагая, что масштаб изображения равен 1.


спасибо. Очень помогло. Конвертированы в Swift 3 и работал

сохранить: let data = UIImagePNGRepresentation(image)

нагрузка: let image = UIImage(data: data)


использовать imageWithData: метод, который переводится на Swift как UIImage(data:)

let image : UIImage = UIImage(data: imageData)

сохранить как данные:

из раскадровки, если вы хотите сохранить данные "image" на imageView MainStoryBoard, будут работать следующие коды.

let image = UIImagePNGRepresentation(imageView.image!) as NSData?

для загрузки "изображения" в imageView: Посмотрите на восклицательный знак"!", "?- точно ли это то же самое, что и это.

imageView.image = UIImage(data: image as! Data)

тип " NSData "автоматически преобразуется в тип" данные " во время этого процесса.


сейчас Swift 4.2 можно использовать pngData() новый метод экземпляра UIImage чтобы получить данные из изображения

let profileImage = UIImage(named:"profile")!
let imageData = profileImage.pngData()

для безопасного выполнения кода, использовать if-let блок Data для предотвращения сбоя приложения и, как функция UIImagePNGRepresentation возвращает необязательное значение.

if let img = UIImage(named: "TestImage.png") {
    if let data:Data = UIImagePNGRepresentation(img) {
       // Handle operations with data here...         
    }
}

Примечание: данные является Swift 3 + класс. Используйте данные вместо NSData с Swift 3+

общие операции с изображениями (например, png и jpg):

if let img = UIImage(named: "TestImage.png") {  //UIImage(named: "TestImage.jpg")
        if let data:Data = UIImagePNGRepresentation(img) {
               handleOperationWithData(data: data)     
        } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) {
               handleOperationWithData(data: data)     
        }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
     if let image = UIImage(data: data) {
        // Use image...
     }
}

С помощью расширения:

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(self)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}

*******
if let img = UIImage(named: "TestImage.png") {  //UIImage(named: "TestImage.jpg")
      if let data = img.pngRepresentationData {
              handleOperationWithData(data: data)     
      } else if let data = img.jpegRepresentationData {
              handleOperationWithData(data: data)     
     }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
     if let image = UIImage(data: data) {
        // Use image...
     }
}