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 .

È stato utile?

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...
     }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top