2012-12-22 31 views
2

我已經將UIImageview轉換爲NSData並將其存儲爲二進制數據。但我不知道如何檢索二進制數據的NSData和轉換,爲的UIImageView如何將二進制數據轉換爲NSData

我的代碼如下

圖像保存爲二進制數據----

-(void) save 
{ 
    UIImage *img = [UIImage imageNamed:@"back2.png"]; 
    NSData *dataObj =UIImagePNGRepresentation(img); 
    NotesDetails *notesDetails = (NotesDetails *) [NSEntityDescription insertNewObjectForEntityForName:@"NotesDetails" inManagedObjectContext:managedObjectContext]; 
notesDetails.imageData=dataObj; 
    NSLog(@"NotesDetails: %@",notesDetails); 
    NSError *error; 
    if (![managedObjectContext save:&error]) 
    { 

    } 
} 

圖片Retreive- -----

-(void)viewDidLoad 
{ 
    NSFetchRequest *fectchreq = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entitydes = [NSEntityDescription entityForName:@"NotesDetails" 
               inManagedObjectContext:self.managedObjectContext]; 
    [fectchreq setEntity:entitydes]; 
    NSSortDescriptor *sortdes = [[NSSortDescriptor alloc] initWithKey:@"notesTime" ascending:YES]; 
    NSArray *sortdesarray = [[NSArray alloc] initWithObjects:sortdes, nil]; 
    [fectchreq setSortDescriptors:sortdesarray]; 
    NSError *error; 
    NSMutableArray *storeddata = [[self.managedObjectContext executeFetchRequest:fectchreq error:&error] mutableCopy]; 

    if ([storeddata count] > 0) 
    { 
     for (NotesDetails *sc in storeddata) 
     { 
      imgFromDb=[NSData dataWithData:[@"%@",sc.imageData]]; 
     } 
    } 
    NSLog(@"Image : %@",imgFromDb); 
    UIImageView *dbImage=[[UIImageView alloc]initWithFrame:CGRectMake(80,20,90,90)]; 
    dbImage.image=[UIImage imageWithData:imgFromDb]; 

    [NoteDetails addSubview:dbImage]; 
} 

回答

3

您可以使用NSKeyedUnarchiver:

imgFromDb= [NSKeyedUnarchiver unarchiveObjectWithData: sc.imageData]; 

而你可以用NSKeyedArchiver做相反的事情(對象數據),如果你喜歡它和UIImagePNGRepresentation()。
還有其他方法可以做到這一點,例如:

imgFromDb= [UIImage imageWithData: sc.imageData];