Je suis en train de charger UIImage
objet de NSData
, et l'exemple de code était à NSImage
, je suppose qu'ils devraient être les mêmes. Mais maintenant, en chargeant l'image, je me demande quel est le meilleur pour résoudre le problème UIImage
de chargement NSData
.NSData et UIImage
Répondre
UIImage a une méthode - initWithData:
. De la docs: "Les données dans le paramètre de données doivent être formatées pour correspondre au format de fichier de l'un des types d'images pris en charge par le système." TheData doit être un objet NSData
qui contient déjà les données
Vous devez charger/télécharger le fichier sur l'objet NSData
avant de l'utiliser. Vous pouvez l'inspecter en utilisant NSLog
sur theData et voir s'il contient les données valides.
Je n'ai pas essayé UIImageJPEGRepresentation()
avant, mais UIImagePNGRepresentation
fonctionne bien pour moi, et la conversion entre NSData
et UIImage
est mort simple:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
Essayez ceci pour convertir une image en NSData:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
Pour une exécution sécurisée du code, utilisez le bloc if-let avec Data, comme la fonction UIImagePNGRepresentation renvoie, valeur facultative.
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Note: Les données est Swift 3 classe. Utilisation des données au lieu de NSData avec Swift 3
opérations d'image génériques (comme png & jpg à la fois):
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...
}
}
En utilisant l'extension:
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...
}
}
Oui, c'est ce que je me sers . Le NSData a l'adresse, tandis qu'après l'appel UIImaeg -initWithData: theData, le point devient 0. Je ne suis pas sûr où voir le message d'erreur. – BlueDolphin