0

次のコードで画像をドキュメントディレクトリに保存しました。その後、画像はドキュメンタリーディレクトリに正常に保存されました

UIImage *image =[[UIImage alloc ]init ];
 image = [UIImage imageNamed:@"PlaceHolder.png"];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString* path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString: @"PlaceHolder.png"] ];
    NSData* data = UIImagePNGRepresentation(image);
    [data writeToFile:path atomically:YES];

今、私は私のテーブルビューのようにテーブルビューで画像を表示したいいくつかの画像がFacebookのURLから表示されているので、私は次のコードを使用しています

NSString *path = [[_arrayForTable valueForKey:@"URL"] objectAtIndex:[indexPath row]];

NSURL *url = [NSURL URLWithString:path];
AsyncImageView *imageView = [[[AsyncImageView alloc] init] autorelease];
imageView.frame = CGRectMake(0, -5, 45, 45);
imageView.imageURL=url;

_arrayForTableはDicの配列であり、URLが含まれています。一部のリンクはFacebookからのもので、一部はドキュメントディレクトリからのものです。

今私の問題は次のとおりです

** Facebookの画像のみがテーブルビューに表示されますが、ドキュメントディレクトリの画像は表示されません**

場所が画像に対して完全に正しいことを確認しましたが、現在は表示されています

4

6 に答える 6

1
NSURL *url = [NSURL URLWithString:path];

これはあなたのコードでは間違っています。このコード行に置き換えてください。

NSURL *url = [NSURL fileURLWithPath:path];

ファイルがドキュメントディレクトリに存在するかどうかを確認します

if([[NSFileManager defaultManager] fileExistsAtPath:path])
    NSURL *url = [NSURL fileURLWithPath:path];

また、画像が保存されているかどうかをドキュメントディレクトリで確認してください。このように画像の名前が付けられます

image = [UIImage imageNamed:@"PlaceHolder.png"];

したがって、この行を繰り返すと、画像はドキュメントディレクトリに上書きされます。

ここにチェックを入れることもできますBOOLsuccess= [data writeToFile:path atomically:YES];

if(success)
   NSLog(@"image written successfully");
else
   NSLog(@"image writing failed");

私が助けてくれたことを願っています。

于 2013-03-26T08:40:14.673 に答える
1

.mファイル内

@interface YourClass ()<NSURLConnectionDelegate>
@property (nonatomic, copy) NSMutableData *receivedImageData;
@end

@implementation YourClass

- (void)init {
    if (self = [super init]) {
        // Do your init stuff
        _receivedImageData = [[NSMutableData alloc] initWithCapacity:0];
    }
}

// A method to start your connection
- (void)startDownloadingImage {
    NSMutableURLRequest *downloadImageRequest = [[NSMutableURLRequest alloc] init];
    downloadImageRequest.URL = [NSURL URLWithString:@"http://www.theImage.you/want/to/download.extension"];
    downloadImageRequest.HTTPMethod = @"GET";
    [NSURLConnection connectionWithRequest:downloadImageRequest delegate:self];

}

// You need the following delegate methods
#pragma mark -
#pragma mark NSURLConnection delegate methods

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse {
    return request;
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

    // This method is called frequently ... you can see if you log
    // NSLog(@"I am downloading");
    [self.receivedImageData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    // Log an error or do whatever you want ;)
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // Create your picture here using
    UIImage *image = [UIImage imageWithData:self.receivedImageData scale:1.0];
    // Only if there is an image display the downloaded image
    if (CGSizeEqualToSize(self.imageView.image.size, CGSizeZero)) {
        self.imageView.image = image;
    }

}

画像をダウンロードしてみてください。画像がない場合は、PlaceHolder.pngを表示し続けることができます。画像をコピーして、実際にプロジェクトディレクトリにあることを確認してください。

// self.imageView is an UIImageView
self.imageView.image = [UIImage imageNamed:@"PlaceHolder.png"];
[self startDownloadingImage];

それがあなたを助けたかどうか私に知らせてください;)

于 2013-03-26T10:08:52.567 に答える
0

ドキュメントディレクトリの画像の画像データがnilでないことを確認しましたか?正しいパスで画像を取得し、正しい位置を指定していることを確認する必要があります

于 2013-03-26T07:51:24.400 に答える
0

AsyncImageViewのサブクラスですUIImageViewimageを使用して画像を読み込んだ後、プロパティを設定するだけですinitWithContentsOfFile:filePath。ディレクトリからロードする画像と、Webからロードする画像を把握する必要があります。

于 2013-03-26T07:56:23.353 に答える
0
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [[_arrayForTable valueForKey:@"URL"] objectAtIndex:[indexPath row]];

NSURL *url = [NSURL URLWithString:path];
if ([path rangeOfString:documentsDirectory].location != NSNotFound)
    url = [NSURL fileURLWithPath:path isDirectory:NO];

AsyncImageView *imageView = [[[AsyncImageView alloc] init] autorelease];
imageView.frame = CGRectMake(0, -5, 45, 45);
imageView.imageURL=url;
于 2013-03-26T08:26:35.983 に答える
0

Asynchimageviewは、ドキュメントディレクトリまたは画像URLを含むバンドルからの画像の読み込みをサポートしていますか??..最初にバンドルから画像を読み込んでみてください。最近、私は同様の問題を抱えており、サーバー自体からプレースホルダーをロードすることになりました。

他のいくつかの回答と同様に、最初に setを使用してUIImageオブジェクトを作成できます。initWithContentsOfFile:asynchimageView.image

于 2013-03-26T08:42:10.157 に答える