NSData y UIImage
-
05-07-2019 - |
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
.
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...
}
}