Pregunta

Estoy tratando de cargar el objeto UIImage de NSData , y el código de muestra era NSImage , supongo que deberían ser iguales. Pero ahora que estoy cargando la imagen, me pregunto qué es lo mejor para solucionar el problema UIImage cargando NSData .

¿Fue útil?

Solución

UIImage tiene un método - initWithData: . De los documentos: " Los datos en el parámetro de datos se deben formatear para que coincidan con el formato de archivo de uno de los tipos de imagen admitidos por el sistema. & Quot;

Otros consejos

No probé UIImageJPEGRepresentation () antes, pero UIImagePNGRepresentation funciona bien para mí, y la conversión entre NSData y UIImage es muerto simple:

NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];

Intenta esto para convertir una imagen a NSdata:

UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);

theData debe ser un objeto NSData que ya contiene los datos. Debe realizar la carga / descarga del archivo en el objeto NSData antes de utilizarlo. Puede inspeccionarlo utilizando NSLog en theData y ver si contiene los datos válidos.

Para la ejecución segura del código, use el bloque if-let con datos, como devuelve la función UIImagePNGRepresentation, valor opcional.

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

Nota: Datos es Swift 3 class. Usa datos en lugar de NSData con   Swift 3

Operaciones de imagen genéricas (como png & amp; jpg):

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

Usando la extensión:

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...
     }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top