1

「img」は実際にはURLを含む文字列ですが、実際にはファイル名としても使用しています。

NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:img];

NSURL *url = [NSURL URLWithString:img];
NSData *imageData = [NSData dataWithContentsOfURL:url];  

[imageData writeToFile:storePath atomically:TRUE];

私のビューコントローラで私はこれを手に入れました:

UIImage *img = [[UIImage alloc] initWithContentsOfFile:self.initialImg];
if(img == nil) NSLog(@"image is nil");
[self.image setImage:img];

「initialImg」は、「img」と同じURLのNSStringです。また、「img」と「initialImg」をtest.pngなどの別の文字列に変更しましたが、これも機能しません。

「imageisnil」と出力されますが、なぜnilなのかわかりません...

編集:

今私は得た:

        NSURL *url = [NSURL URLWithString:img];
    NSData *imageData = [NSData dataWithContentsOfURL:url]; 

    UIImage *uiImage=[UIImage imageWithData:imageData];

    NSData *pngData = UIImagePNGRepresentation(uiImage);
    NSString *documentsPath  = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"]; 
    [pngData writeToFile:filePath atomically:YES];

そして、viewDidLoad関数の別のビューコントローラーでは、次のようになります。

    UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"image.png"];
    if(img == nil) NSLog(@"image is nil");

   [self.image setImage:img];

それでも「画像はゼロです」と表示され、URLを変更しましたが、正しいです

4

2 に答える 2

0

initWithContentsOfFile:ファイルパス全体を指定する必要があります。 ファイル名だけを付けていると思います。
ケースを試す

NSString *initialImg= @"test.png";
NSString *imagePath = [[NSBundle mainBundle]pathForResource:initialImg ofType:@"png"];
UIImage *img = [[UIImage alloc] initWithContentsOfFile:imagePath];
if(img == nil) NSLog(@"image is nil");
[self.image setImage:img];

それ以外の場合は使用できます

self.image =[UIImage imageNamed:@"test.png"]

ただし、パフォーマンスの問題が発生します

あなたの質問に答えてください

//Write image data into document directory  

NSData *pngData = UIImagePNGRepresentation(image);
NSString *documentsPath  = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"]; //Add the file name
[pngData writeToFile:filePath atomically:YES]; //Write the file


 // Read from directory using same file path 
NSData *pngData = [NSData dataWithContentsOfFile:filePath];
UIImage *image = [UIImage imageWithData:pngData];
于 2013-03-07T14:34:58.937 に答える
0

あなたにはこれで十分だと思います...

NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:img];

NSURL *url = [NSURL URLWithString:img];
NSData *imageData = [NSData dataWithContentsOfURL:url];

[imageData writeToFile:storePath atomically:TRUE];

in viewDidLoad // URL ではなく storePath
が必要です

NSData *imageData = [NSData dataWithContentsOfFile:storePath];
UIImage *image = [UIImage imageWithData:imageData];
于 2013-03-07T15:20:51.397 に答える