Ios 创建要从应用程序目录中的文件加载到tableview的图像缩略图
对于一个我无法解决的问题,我需要一些帮助,但我认为我已经接近解决方案了。这是: 在我的应用程序的一个版本中,我能够使用从Ios 创建要从应用程序目录中的文件加载到tableview的图像缩略图,ios,uitableview,uiimageview,thumbnails,Ios,Uitableview,Uiimageview,Thumbnails,对于一个我无法解决的问题,我需要一些帮助,但我认为我已经接近解决方案了。这是: 在我的应用程序的一个版本中,我能够使用从Assetlibrary获取的图像填充一个tableview(在CellForRowatineXpath中),使用以下两行: ALAsset someAsset = [theAssets objectAtIndex:indexPath.row]; [cell.imageView setImage:[UIImage imageWithCGImage:[someAsset thum
Assetlibrary
获取的图像填充一个tableview(在CellForRowatineXpath
中),使用以下两行:
ALAsset someAsset = [theAssets objectAtIndex:indexPath.row];
[cell.imageView setImage:[UIImage imageWithCGImage:[someAsset thumbnail]]];
现在,我正在尝试从目录中读取图像文件,并将其存储在NSMutableArray
中。当我NSLog
使用NSMutableArray
时,我可以看到文件名。但是我现在如何使文件转换为图像并显示在我的tableview中,就像我为什么使用Assetlibrary
一样?我已经试过好几次了,但应用程序要么崩溃,要么在表视图中不显示图像缩略图。例如,此语句不显示图像,但应用程序不会崩溃:
UIImage *anImage = [UIImage imageWithContentsOfFile:[self.listTable objectAtIndex:0]];
当我在下一行设置image时,它不起作用。有人请帮忙
更新:当我记录self.listable的内容时,它是这样的:“19-10-25 276-10-12.jpg”,
“19-10-37276-10-12.jpg”,
“19-10-54 276-10-12.jpg”,
“19-10-65 276-10-12.mov”等
当我记录我的文档目录时,它是:/var/mobile/Applications/8CB1368A-AAE2-4815-BD26-A7B7C8536193/documents。如果这些文件位于您的
documents
文件夹中,则对于位于应用程序沙盒中的文件(例如documents
中的文件、捆绑包等),应用程序只能使用带有内容的图像,您可以通过以下方式获得完整路径:
NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *imageFullPath = [documentsFolder stringByAppendingPathComponent:imageFilename];
然后,您可以在图像和文件内容中使用它
更新:
你问:
我的directoryContents
是一个NSArray
;如何将其转换为NSString
,然后[文档文件夹stringByAppendingPathComponent…]
,并将每个完整路径存储在NSMutableArray
中
您可能会这样做:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSArray *filenames = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil];
NSMutableArray *paths = [[NSMutableArray alloc] initWithCapacity:[filenames count]];
for (NSString *filename in filenames)
{
[paths addObject:[documentsDirectory stringByAppendingPathComponent:filename]];
}
NSLog(@"%s filenames = %@", __FUNCTION__, filenames);
NSLog(@"%s paths = %@", __FUNCTION__, paths);
我用self.listTable的内容以及我的文档目录更新了这个问题。如何使文件名具有完整的路径?我希望能够使用listTable数组中的每个文件创建图像。如何编写或修改代码?谢谢。但是我从哪里获得您在第二行代码中使用的“imageFilename”?我以前也尝试过类似的方法,但是图像没有显示出来,因此我感到困惑。谢谢。是的,这是一个文件名,我还有一个步骤来解决这个问题。我在NSArray中获取文件名,如下所示:NSArray*directoryContents=[fileManager内容目录路径:Documents目录错误:nil。我也会得到如下文档目录:/var/mobile/Applications/8CB1368A-AAE2-4815-BD26-A7B7C8536193/Documents。我的最终目标是能够为每个文件名派生一个NSMutableString,如:/var/mobile/Applications/8CB1368A-AAE2-4815-BD26-A7B7C8536193/Documents/19-10-25276-10-12.jpg”,等等。我尝试了不同的方法,但仍然缺少一些东西,请帮助。我的directoryContents是一个NSArray;如何将其转换为NSString,然后再将[DocumentsFolderStringByAppendingPathComponent…]并将每个完整路径存储在NSMutableArray中?感谢您的帮助。@Paulo看到了我修改后的答案。非常感谢!现在我在tableview方法中进行了正确的调用,它正在工作!