Je dois remplir la cellule de la base de données et les images sont sur le périphérique . Je dois stocker cette image dans imageDataObject
, comment convertir cette UIImage
en NSData
. Suggérez-moi, j'ai essayé plusieurs solutions, mais cela ne convertit pas que NSData
à UIImage
.
cell.textLabel.text = [[offlineImageListArray objectAtIndex:indexPath.row] imageName];
UIImage *thumbnail = [self retrieveImageFromDevice:[[offlineImageListArray objectAtIndex:indexPath.row] imageName]];
NSData* data = ??????????;
ImageData *imageDataObject = [[ImageData alloc] initWithImageId:[[offlineImageListArray objectAtIndex:indexPath.row]imageId]
imageName:[[offlineImageListArray objectAtIndex:indexPath.row] imageName] imageData:data];
[imagesArray addObject:imageDataObject];
Pour convertir UIImage
en NSData
, utilisez UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)
ou UIImagePNGRepresentation(UIImage *image)
Pour convertir NSData
en UIImage
, utilisez [UIImage imageWithData:imageData]
Donc, votre exemple pourrait ressembler à ceci:
cell.textLabel.text = [[offlineImageListArray objectAtIndex:indexPath.row] imageName];
UIImage *thumbnail = [self retrieveImageFromDevice:[[offlineImageListArray objectAtIndex:indexPath.row] imageName]];
NSData* data = UIImagePNGRepresentation(thumbnail);
ImageData *imageDataObject = [[ImageData alloc] initWithImageId:[[offlineImageListArray objectAtIndex:indexPath.row]imageId] imageName:[[offlineImageListArray objectAtIndex:indexPath.row] imageName] imageData:data];
[imagesArray addObject:imageDataObject];
Références: https://developer.Apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIKitFunctionReference/Reference/reference.htmlhttps://developer.Apple.com/Library/ ios/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html
Essayez avec ceci:
Utilisez ceci pour convertir UIImage
à NSData
.
NSData *imagedata = UIImagePNGRepresentation(thumbnail);
Essayez ceci pour que les données d'image soient reconverties en UIImage
UIImage *image= [UIImage imageWithData:imagedata];
en version Swift:
let imageData = UIImagePNGRepresentation(image!)!
let imageFromData = UIImage(data: imageData)
Utilisez le bloc if-let avec Data pour éviter toute blocage de l'application et une exécution en toute sécurité du code, car la fonction UIImagePNGRepresentation renvoie une valeur facultative.
if let img = UIImage(named: "TestImage.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Remarque: Les données est Swift 3 classe. Utilisez Data au lieu de NSData avec Swift 3
Opérations d'image génériques (comme png et jpg à la fois):
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...
}
}
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: "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...
}
}