J'ai un UIImageView
dont l'image est définie via UIImagePicker
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
[picker dismissViewControllerAnimated:YES completion:nil];
self.gImage.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}
J'essaie de convertir cette image en NSData
et de l'enregistrer avec les données de base:
NSData *imageData = UIImagePNGRepresentation(self.gImage.image);
NSString *savedData = [[NSString alloc]initWithData:imageData encoding:NSUTF8StringEncoding];
//am is a pointer to my entities class. imageData is just a NSString attribute
am.imageData = savedData;
NSError *error;
if (![self.managedObjectContext save:&error]) {
//Handle Error
} else {
[self dismissViewControllerAnimated:YES completion:nil];
}
Ensuite, j'essaie de charger l'image dans un fichier séparé:
self.cell.gImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:self.myEntity.imageData]]];
Je ne vois pas pourquoi cela ne fonctionne pas. Toute aide est grandement appréciée!
Vous pouvez convertir un UIImage en NSData comme ceci:
Si image PNG
UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
Si image JPG
UIImage *image = [UIImage imageNamed:@"imageName.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
Vous pouvez le stocker dans CoreData comme ceci (c'est une solution utile possible):
[newManagedObject setValue:imageData forKey:@"image"];
Vous pouvez charger les données de CoreData comme ceci:
NSManagedObject *selectedObject = [[self yourFetchCOntroller] objectAtIndexPath:indexPath];
UIImage *image = [UIImage imageWithData:[selectedObject valueForKey:@"image"]];
// Set the image to your image view
yourimageView.image = image;
Pour Swift c'est juste:
UIImage
à NSData
imageData = UIImagePNGRepresentation(image)
Sous Mac OS, vous pouvez laisser Core Data gérer cela pour vous en cochant la case Transformable sur l'attribut dans le modèle, sans sélectionner un transformateur spécifique et en affectant l'UIImage directement à la propriété.
Je ne sais pas si cela fonctionne sur iOS, mais cela pourrait valoir la peine d'être essayé.
Essayez ce code pour enregistrer les données d'image
sauver:
NSManagedObjectContext *context = [self managedObjectContext];
newsObj = [NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:context];
NSData *imageData = UIImagePNGRepresentation(self.gImage.image);
[newsObj setValue:imageData forKey:@"imgPng"];
NSError *error;
@try{
if (managedObjectContext != nil) {
if (![managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
}
}@catch (NSException *exception) {
NSLog(@"inside exception");
}
Pour revenir, essayez ceci:
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity1 = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:context];
[fetchRequest setEntity:entity1];
NSError *error;
NSArray * array = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (array == nil) {
NSLog(@"Testing: No results found");
}else {
NSLog(@"Testing: %d Results found.", [array count]);
}
NSData * dataBytes = [[array objectAtIndex:0] imgPng];;
image = [UIImage imageWithData:dataBytes];
[fetchRequest release];
}
@catch (NSException *exception) {
NSLog(@"inside exception");
}
Pour convertir une image en NSData, essayez le code ci-dessous ...
UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
faites-moi savoir que cela fonctionne ou non .. !!!
Happy Coding !!!!
Voici ce que j'ai fait et son travail pour le stockage sur nsdata.
[productTypeSub setValue:[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]] forKey:@"imgSmall"];
et chargement à l'image avec ce code
ImgProductType.image= [[UIImage alloc] initWithData:productTypeSub.imgSmall];
Ce code enregistre vos données d'image dans des fichiers et vous pouvez l'utiliser n'importe où
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image1 editingInfo:(NSDictionary *)editingInfo
{
{
CGSize destinationSize = CGSizeMake(170,170);
UIGraphicsBeginImageContext(destinationSize);
[image1 drawInRect:CGRectMake(0,0,destinationSize.width,destinationSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NsData *filedata = UIImagePNGRepresentation(newImage);
[picker dismissModalViewControllerAnimated:YES];
}
}