如何保存从UIImagePickerViewController拾取到sqlite数据库的图像的path,并在以后访问? IOS
我需要保存从服务器获取的图像的path,并稍后访问path以通过数据库检索在用户点击时显示该图像。
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSString *urlPath = [info objectForKey:@"UIImagePickerControllerReferenceURL"]absoluteString]; }
并保存到数据库。
它保存为assets-library://asset/asset.JPG?id = E1136225-97DE-4BF4-A864-67E33D60737A&ext = JPG
那么我想导入到Imageview
UIImageView *iv = [[UIImageView alloc]init]; iv.image = [UIimage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imagepath]]];
但它不工作
使用assetForURL:resultBlock:failureBlock:
方法通过URL检索图像。 还有更多信息: http : //developer.apple.com/library/ios/#documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009722
UPD:
ALAssetsLibrary *lib = [[ALAssetsLibrary alloc] init]; [lib assetForURL: url resultBlock: ^(ALAsset *asset) { ALAssetRepresentation *r = [asset defaultRepresentation]; self.imgView.image = [UIImage imageWithCGImage: r.fullResolutionImage]; } failureBlock: nil];
url
是你的cachingURL
尝试这个:
typedef void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *asset); typedef void (^ALAssetsLibraryAccessFailureBlock)(NSError *error); ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset){ ALAssetRepresentation *rep = [myasset defaultRepresentation]; CGImageRef iref = [rep fullResolutionImage]; if (iref){ UIImage *myImage = [UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]]; [fileImage addObject:myImage]; } }; ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror){ //failed to get image. }; ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease]; [assetslibrary assetForURL:[filePath objectAtIndex:0] resultBlock:resultblock failureBlock:failureblock];
注意:确保你的[filePath objectAtIndex:0]
将是一个NSUrl
对象。 否则将其转换为NSUrl
例:
ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease]; NSURL myAssetUrl = [NSURL URLWithString:[filePath objectAtIndex:0]]; assetslibrary assetForURL:myAssetUrl resultBlock:resultblock failureBlock:failureblock];