Convertir UIImage a NSData y convertir de nuevo a UIImage en Swift?
Estoy tratando de guardar un UIImage
a NSData
y luego leer el NSData
de nuevo a un nuevo UIImage
en Swift. Para convertir el UIImage
a NSData
estoy usando el siguiente código:
let imageData: NSData = UIImagePNGRepresentation(myImage)
¿Cómo convertir imageData
(es decir, NSData
) a un nuevo UIImage
?
6 answers
UIImage(data:imageData,scale:1.0)
suponiendo que la escala de la imagen es 1.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-30 14:43:40
Gracias. Me ayudó mucho. Convertido a Swift 3 y trabajado
Para guardar: let data = UIImagePNGRepresentation(image)
Para cargar: let image = UIImage(data: data)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-16 03:54:40
Uso imageWithData:
método, que se traduce a Swift como UIImage(data:)
let image : UIImage = UIImage(data: imageData)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-30 14:44:51
Para guardar como datos:
Desde StoryBoard, si desea guardar datos de "imagen" en ImageView de MainStoryboard, los siguientes códigos funcionarán.
let image = UIImagePNGRepresentation(imageView.image!) as NSData?
Para cargar "image" a ImageView: Mira signo de exclamación"!", "?"de cerca si eso es lo mismo que éste.
imageView.image = UIImage(data: image as! Data)
El tipo"NSData" se convierte en tipo "Data" automáticamente durante este proceso.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-20 14:23:24
Ahora en Swift 4.2 puede usar pngData()
nuevo método de instancia de UIImage
para obtener los datos de la imagen
let profileImage = UIImage(named:"profile")!
let imageData = profileImage.pngData()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-06 21:09:53
Para la ejecución segura del código, use if-let
bloque con Data
para evitar el bloqueo de la aplicación & , ya que la función UIImagePNGRepresentation
devuelve un valor opcional.
if let img = UIImage(named: "TestImage.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Nota: Data es clase Swift 3+. Utilizar datos en lugar de NSData con Swift 3 +
Operaciones genéricas de imagen (como png y jpg):
if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg")
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(self)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
*******
if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg")
if let data = img.pngRepresentationData {
handleOperationWithData(data: data)
} else if let data = img.jpegRepresentationData {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-21 04:32:00