18

UIImageView経由で画像を設定するUIImagePicker

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    [picker dismissViewControllerAnimated:YES completion:nil];
    self.gImage.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

NSDataこの画像をコアデータに変換して保存しようと「試み」ます。

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];
}

次に、画像を別のファイルにロードしようとします。

self.cell.gImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:self.myEntity.imageData]]];

なぜこれが機能しないのかわかりません。どんな助けでも大歓迎です!

4

8 に答える 8

58

次のように UIImage を NSData に変換できます。

PNG画像の場合

UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

JPG画像の場合

UIImage *image = [UIImage imageNamed:@"imageName.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);

次のように CoreData に格納できます (これは 1 つの便利なソリューションです)。

[newManagedObject setValue:imageData forKey:@"image"];

次のように CoreData からデータをロードできます。

NSManagedObject *selectedObject = [[self yourFetchCOntroller] objectAtIndexPath:indexPath];
UIImage *image = [UIImage imageWithData:[selectedObject valueForKey:@"image"]];

// Set the image to your image view  
yourimageView.image = image;
于 2013-01-03T05:15:02.257 に答える
3

データベースに保存する場合:::

        NSInteger RandomIndex = arc4random() % 1000; 
        NSString *randomImageName =[NSString stringWithFormat:@"Image%i.png",RandomIndex]; 
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:randomImageName];
        if ([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]) {
            [[NSFileManager defaultManager] removeItemAtPath:savedImagePath error:nil];
            NSLog(@"file removed from path");
        }
        NSLog(@"Saved Image Path : %@",savedImagePath);
         NSData* imageData = UIImagePNGRepresentation (image1 ); 
        [imageData writeToFile:savedImagePath atomically:YES];

         //am is a pointer to my entities class. imageData is just a NSString attribute
        am.imageData = randomImageName;

データベースからその画像を取得すると、次のコードを記述できます...

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:randomImageName];
NSData *myData = [NSData dataWithContentsOfFile:savedImagePath];
        UIImage *selectedImage = [UIImage imageWithData:myData];

お役に立てばと思います。

于 2013-01-03T05:25:25.497 に答える
1

画像を NSData に変換するには、以下のコードを試してください...

UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

それが機能しているかどうかを教えてください.. !!!

ハッピーコーディング!!!!

于 2013-01-03T05:10:21.140 に答える
0

このコードは画像データを filedata に保存し、どこでも使用できます

-(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];
   }
}
于 2013-01-03T05:33:38.243 に答える
0

これが私が行ったことと、nsdataに保存するための作業です。

[productTypeSub setValue:[[NSData alloc] initWithContentsOfURL:[NSURL  URLWithString:url]] forKey:@"imgSmall"];

このコードで画像にロードします

ImgProductType.image= [[UIImage alloc] initWithData:productTypeSub.imgSmall];
于 2013-10-21T21:17:14.480 に答える