如何搜索图像文件

时间:2016-08-31 06:47:48

标签: ios objective-c nsinputstream

无论如何都要检查我的iPhone中是否存在特定的图像文件。让我们说我的图像名称是IMG_123.JPG。我想搜索此图像,如果它存在,我想使用该文件创建一个NSInputStream对象。如果图片不在NSBundle中,则可以将其保存在照片库或某处。

请帮帮我。 感谢

更新

NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [pathArray objectAtIndex:0];
NSString* dataPath = [documentsDirectory  stringByAppendingPathComponent:@"IMG_2594.JPG"];

更新2

用户点击选择器图像时获取图像

copyOfOriginalImage = [UIImage imageWithCGImage:[[imageAsset defaultRepresentation] fullResolutionImage]];

将图像转换为NSData

imageData = UIImageJPEGRepresentation(copyOfOriginalImage, 1.0);

然后我将其转换为base64

strEncoded=[imageData base64EncodedStringWithOptions:0];

1 个答案:

答案 0 :(得分:1)

您的图片可以是应用中的documentdirectoryassetsappbundle

位于photolibrary的图片,您不能将其称为应用数据库的一部分。

因此,您可以检查您的图片是否在documentdirectorytempdirectorycustomdirectory等任何目录中可用,如果您已经这样做了,

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

NSFileManager *manager = [NSFileManager defaultManager];

NSArray *filesIndir = [manager contentsOfDirectoryAtPath:path error:nil];

if ([filesIndir containsObject:@"IMG_123.JPG"]) {

    NSLog(@"document directory contains : IMG_123.JPG");
}

它将直接在文档目录中检查。如果要在文档目录中创建自定义目录,请提供它的路径。

现在,如果您的图片位于应用套装中,那么您可以查看它,

  UIImage *image = [UIImage imageNamed:@"IMG_123.JPG"];

if (image) {

    NSLog(@"yes image available in app bundle");
}

如果您的图片位于assests,那么您可以查看它,

   UIImage *image2 = [UIImage imageNamed:@"IMG_123"];

if (image2) {

    NSLog(@"yes image available in assets");
}

现在,检查图片在照片库中可用,这是一项有点关键的任务,您应该拥有所有图像的列表,然后您可以检查它是否可用。为此,您必须使用ALAssetsLibrary

请参阅This SO answer进行管理。

您也可以参考this so post