5

最初に写真ライブラリからALAssetライブラリに画像を選択し、その後、ALAssetライブラリパスからドキュメントディレクトリに画像を保存しました。

このコードを使用して、ALAssetライブラリのドキュメントディレクトリに画像を保存しています...完璧に機能しています...ドキュメントディレクトリに保存されているすべての画像をテーブルビューで表示したいのですが、どうすればよいですか?誰かが私を助けることができますか?

ALAssetライブラリからNSdocumentディレクトリに画像をインポートするためのコード

for (int j=0; j<[assetArray count]; j++) {

ALAssetRepresentation *representation = [[assetArray objectAtIndex:j] defaultRepresentation];
NSString* filename = [documentPath stringByAppendingPathComponent:[representation filename]];

[[NSFileManager defaultManager] createFileAtPath:filename contents:nil attributes:nil];
NSOutputStream *outPutStream = [NSOutputStream outputStreamToFileAtPath:filename append:YES];
[outPutStream open];

long long offset = 0;
long long bytesRead = 0;

NSError *error;
uint8_t * buffer = malloc(131072);
while (offset<[representation size] && [outPutStream hasSpaceAvailable]) {
    bytesRead = [representation getBytes:buffer fromOffset:offset length:131072 error:&error];
    [outPutStream write:buffer maxLength:bytesRead];
    offset = offset+bytesRead;
}
[outPutStream close];
free(buffer);

}

その後、私はこのコードを使用してディレクトリの内容を取得しました:

 NSFileManager *manager = [NSFileManager defaultManager];
fileList = [manager directoryContentsAtPath:newDir];

それも機能しています...しかし今、ドキュメントディレクトリから画像を表示したいとき。何も表示されません。

 setImage.image=[UIImage imageNamed:[filePathsArray objectAtIndex:0]];

誰か助けてもらえますか、どこに問題がありますか????? -疑問が1つあります。*ALAssetライブラリからドキュメントディレクトリに画像をインポートする正しい方法ですか?

4

3 に答える 3

11

この回答は、ドキュメント ディレクトリから画像を取得し、それらを UITableView に表示する方法に関するものです... ..

まず、すべての画像をドキュメント ディレクトリから配列に取得する必要があります....

-(void)viewWillAppear:(BOOL)animated
{

    arrayOfImages = [[NSMutableArray alloc]init];
NSError *error = nil;


    NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];

    NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath: stringPath  error:&error];

  for(int i=0;i<[filePathsArray count];i++)
  {
      NSString *strFilePath = [filePathsArray objectAtIndex:i];
      if ([[strFilePath pathExtension] isEqualToString:@"jpg"] || [[strFilePath pathExtension] isEqualToString:@"png"] || [[strFilePath pathExtension] isEqualToString:@"PNG"]) 
      {
         NSString *imagePath = [[stringPath stringByAppendingString:@"/"] stringByAppendingString:strFilePath];
         NSData *data = [NSData dataWithContentsOfFile:imagePath];
        if(data)
        {
          UIImage *image = [UIImage imageWithData:data];
          [arrayOfImages addObject:image];
        }
      }

  }

}

その後-この配列を使用して、uitableviewセルに画像を表示できます。配列がいっぱいになるまで、ビューにテーブルビューを追加しないでください.....

#pragma mark - UItableViewDelegate methods
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [arrayOfImages count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tablView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    //adjust your imageview frame according to you
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0.0, 0.0, 470.0, 80.0)];

    [imageView setImage:[arrayOfImages objectAtIndex:indexPath.row]];
    [cell.contentView addSubview:imageView];
    return cell;

}

今すぐ実行してください..

于 2012-07-02T12:55:19.110 に答える
4

これでコンテンツを直接取得できます:

NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] error:NULL];

画像を設定するには:

[imgView setImage:[UIImage imageWithContentsOfFile:"Your complete path"]];
于 2012-07-02T12:36:52.507 に答える
1

次の方法で、ドキュメント ディレクトリからすべての画像ファイルを取得できます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory  error:nil];
    NSMutableArray *imgFiles = [[NSMutableArray alloc] init];
    for (int i=0; i<filePathsArray.count; i++) {
        NSString *strFilePath = [filePathsArray objectAtIndex:0];
        if ([[strFilePath pathExtension] isEqualToString:@"jpg"]) {
            [imgFiles addObject:[filePathsArray objectAtIndex:i]];
        }
    }

    NSLog(@"array with paths of image files in the Document Directory %@", filePathsArray);

そして、次のUITableViewように画像を表示できます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 50, 50)];
    img.image = [UIImage imageWithContentsOfFile:[imgFiles objectAtIndex:indexPath.row]];
    [cell addSubview:img];

    return cell;
}

乾杯!!!

于 2012-07-02T12:34:11.723 に答える