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.