create ios iphone cocoa-touch uiimage nsdata

ios - create - uiimageview set image swift



NSData y UIImage (5)

Intenta esto para convertir una imagen a NSdata:

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

Estoy intentando cargar el objeto UIImage desde NSData , y el código de muestra fue a NSImage , supongo que deberían ser iguales. Pero ahora, al cargar la imagen, me pregunto qué es lo mejor para solucionar el problema de carga de NSData UIImage .


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

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


Para la ejecución segura del código, use if-let block with Data, 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: Los datos son clase Swift 3. Usa datos en lugar de NSData con Swift 3

Operaciones genéricas de imagen (como png y jpg ambas):

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

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


UIImage tiene un - initWithData: método. 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 imágenes admitidos por el sistema".


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