Конвертировать UIImage в NSData и конвертировать обратно в UIImage в Swift?


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

let imageData: NSData = UIImagePNGRepresentation(myImage)

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

6 99

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)

для сохранения в виде данных:

из раскадровки, если вы хотите сохранить данные "изображения" на 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...
     }
}