NSData e UIImage
-
05-07-2019 - |
Domanda
Sto cercando di caricare l'oggetto UIImage
da NSData
, e il codice di esempio era NSImage
, immagino che dovrebbero essere gli stessi. Ma proprio ora caricando l'immagine, mi chiedo quale sia il migliore per risolvere il problema UIImage
caricando NSData
.
Soluzione
UIImage ha un metodo - initWithData:
. Dai documenti: " I dati nel parametro data devono essere formattati in modo che corrispondano al formato file di uno dei tipi di immagine supportati dal sistema. & Quot;
Altri suggerimenti
Non ho mai provato UIImageJPEGRepresentation ()
prima, ma UIImagePNGRepresentation
funziona bene per me e la conversione tra NSData
e UIImage
è semplicissimo:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
Prova questo per convertire un'immagine in NSdata:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
theData dovrebbe essere un oggetto NSData
che contiene già i dati. È necessario eseguire il caricamento / download del file nell'oggetto NSData
prima di utilizzarlo. Puoi ispezionarlo usando NSLog
su theData e vedere se contiene i dati validi.
Per un'esecuzione sicura del codice, utilizzare il blocco if-let con Data, poiché la funzione UIImagePNGR restituisce la rappresentazione, valore facoltativo.
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Nota: Dati è la classe Swift 3. Utilizzare i dati anziché NSData con Swift 3
Operazioni generiche con le immagini (come png e amp; jpg entrambi):
if let img = UIImage(named: "Hello.png") {
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 l'estensione:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(img)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
*******
if let img = UIImage(named: "Hello.png") {
if let data = img.pngRepresentationData {
handleOperationWithData(data: data)
} else if let data = jpegRepresentationData {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}