2015-11-03 41 views
1

这里我手动将一个名为image1.png的图像加载到iPad照片库中,并且需要在我的iPad应用程序中获取相同的图像。我的图像被替换为具有相同名称的新图像,我的意图是在不做任何代码更改的情况下随时更改图像。我没有选择将图像保存在服务器并从那里访问,所以我正在寻找这样的解决方案。请帮我是否可以通过使用图片名称从iPad照片库中获取图像

+0

您可以通过谓词浏览PHFetchOptions()。我不确定他们是否提供图片标题查询。但是我们可以使用PHFetchOptions()来查询“creationTime”,“mediatype”等。请通过以下浏览https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHFetchOptions_Class/index.html –

回答

0

我没有得到解决方案,使用图像名称从iPad库加载图像,所以我将所有图像保存在一个用户库中,并从我的iPad应用程序加载图像。

-(void)loadImageFromLibrary 
{ 
    __block UIImage *ima; 

    NSMutableArray *images=[NSMutableArray new]; 

    PHAsset *asset = nil; 

    PHAssetCollection *collection; 

    NSArray *collectionsFetchResults; 

    NSMutableArray *localizedTitles = [[NSMutableArray alloc] init]; 

    PHFetchResult *userCollections = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil]; 

    collectionsFetchResults = @[userCollections];//to get images from user created library. 

    for (int i = 0; i < collectionsFetchResults.count; i ++) { 

     PHFetchResult *fetchResult = collectionsFetchResults[i]; 

     for (int x = 0; x < fetchResult.count; x ++) { 

      collection = fetchResult[x]; 
      localizedTitles[x] = collection.localizedTitle;//get library names 
     } 

    }//MyImages is my image library 
    if ([collection.localizedTitle isEqualToString:@"MyImages"]) { 

     PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:collection options:nil]; 

     if (fetchResult != nil && fetchResult.count > 0) { 

      for (asset in fetchResult) { 

       PHImageRequestOptions * imageRequestOptions = [[PHImageRequestOptions alloc] init]; 

       imageRequestOptions.synchronous = YES; 

       [[PHImageManager defaultManager] requestImageForAsset:asset 

                  targetSize:PHImageManagerMaximumSize 

                  contentMode:PHImageContentModeDefault 

                   options:imageRequestOptions 

                 resultHandler:^void(UIImage *image, NSDictionary *info) { 

                  NSLog(@"info = %@", info); 

                  ima = image; 

                 }]; 

       [images addObject:ima]; 

      } 

     } 
    } 
} 

使用此函数我解决了我的问题。它可能是有用的。

1

你可能想将其保存到本地存储:

// Assuming 'newImage' is a 'UIImage' object containing your image 
NSData *imageData = UIImagePNGRepresentation(newImage); 

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

NSString *imagePath =[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",@"yourImageName"]]; 

NSLog((@"pre writing to file")); 
if (![imageData writeToFile:imagePath atomically:NO]) 
{ 
    NSLog((@"Failed to cache image data to disk")); 
} 
else 
{ 
    NSLog((@"the cachedImagedPath is %@",imagePath)); 
    // Persist path in a dictionary or NSUserDefaults 
} 

,以后再取这样说:

NSString *theImagePath = [yourDictionary objectForKey:@"cachedImagePath"]; 
UIImage *customImage = [UIImage imageWithContentsOfFile:theImagePath]; 

代码从here

+0

我不想使用应用程序保存图像,我想加载无论何时用户需要,都可以手动将图像存储到库中,并且还可以替换图像,名称应该与“image1.png”相同。 – Rajith

+0

@Rajith asfaik这是不可能的,因为你不能设置图像的名称。您可以随时获取[相机胶卷中的最新图像](http://stackoverflow.com/a/8872425/1633733)。您也可以启用与iTunes共享文件,结果用户将能够在iTunes中查看和交换文件。 – limfinity

相关问题