2015-08-30 27 views
82

Sto tentando di salvare uno UIImage in NSData e quindi di leggere lo NSData in un nuovo UIImage in Swift. Per convertire il UIImage-NSData Sto utilizzando il seguente codice:Converti UIImage in NSData e converti in UIImage in Swift?

let imageData: NSData = UIImagePNGRepresentation(myImage) 

Come faccio a convertire imageData (NSData) di nuovo ad una nuova UIImage?

risposta

83

UIImage(data:imageData,scale:1.0) presumere scala dell'immagine è 1.

+1

Yea che fa il lavoro. Molte grazie – pete

37

Grazie. Mi ha aiutato molto Convertito in Swift 3 e lavorato

Per salvare: let data = UIImagePNGRepresentation(image) as NSData?

a prendere: let imagePt = UIImage(data: (caminhodaImagem as! NSData) as Data)

+0

Non c'è 'let imagePt = UIImage (data: caminhodaImagem)' abbastanza? –

4

Per salvare i dati:

dallo storyboard, se si desidera salvare i dati "di immagine" sul ImageView di MainStoryBoard, i seguenti codici funzioneranno.

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

caricare "immagine" per IMAGEVIEW: Guardate punto esclamativo, "!" "?" da vicino se è abbastanza simile a questo.

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

Il tipo "NSData" viene convertito automaticamente in "Dati" durante questo processo.

1

Per l'esecuzione in sicurezza del codice, utilizzare if-let blocco con Data per evitare che app incidente &, come la funzione UIImagePNGRepresentation restituisce un valore opzionale.

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

Nota: dati è Swift 3+ di classe. L'utilizzo dei dati invece di NSData con Swift 3+

operazioni generiche di immagine (come png & jpg entrambi):

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... 
    } 
} 

Utilizzando estensione:

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... 
    } 
}