首先,我从照片库中选择了图像到ALAsset Library,之后我将图像存储在ALAsset库路径的文档目录中。
我正在使用此代码将图像存储在ALAsset Library的文档目录中....它的工作完美...现在我想在表格视图中显示存储在文档目录中的所有图像..我该怎么做??? 谁能帮助我?
将图像从ALAsset Library导入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]];
任何人都可以帮忙,问题出在哪里????? - 我有一个疑问: *是否将图像从ALAsset库导入文档目录???
是正确的方法答案 0 :(得分: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;
}
现在运行它会起作用..
答案 1 :(得分:4)
您可以直接获取内容:
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] error:NULL];
设置图片:
[imgView setImage:[UIImage imageWithContentsOfFile:"Your complete path"]];
答案 2 :(得分: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;
}
干杯!!!