簡體   English   中英

無法從絕對路徑將圖像加載到UIImageView

[英]Cannot load image to UIImageView from absolute path

我使用UIImagePickerController來拾取圖像並加載到我的UIImageView中,但是我想保存用戶的拾取並稍后加載它,我認為將絕對路徑保存為用戶默認值會很好,但是不起作用(

我如何保存路徑//一切正常

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:   (NSDictionary *)info
{

[self.backgroundImage setImage:info[UIImagePickerControllerOriginalImage]];
NSURL* localUrl = (NSURL *)[info valueForKey:UIImagePickerControllerReferenceURL];

//in localUrl I see: assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG

NSUserDefaults *saves = [NSUserDefaults standardUserDefaults];
[saves setValue:[localUrl absoluteString] forKey:@"backimage"];
[saves synchronize];

[self dismissViewControllerAnimated:YES completion:nil];
}

我如何嘗試加載://不起作用(

NSUserDefaults *saves = [NSUserDefaults standardUserDefaults];

if(![saves objectForKey:@"backimage"]){

 [self.backgroundImage setImage:[UIImage imageNamed:@"gameBackiPhone"]];

}else{

 NSURL *url = [NSURL URLWithString:[saves objectForKey:@"backimage"]];

//in url I see: assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG

 UIImage *bimage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:url]];

 [self.backgroundImage setImage:bimage];

}

我一定找不到。

您不能使用資產URL直接加載圖像,需要使用ALAssetsLibrary類來實現它。 使用以下代碼片段通過素材資源網址加載圖片。

// *** It will return Asset from URL passed, create Image from Asset and set into your `UIImageView` ***
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
    ALAssetRepresentation *rep = [myasset defaultRepresentation];
    CGImageRef iref = [rep fullResolutionImage];
    if (iref) {
        UIImage *largeimage = [UIImage imageWithCGImage:iref];
        yourImageView.image = largeImage;
    }
};

// *** If any error occurs while getting image from Asset Library following block will be invoked ***
ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
{
    NSLog(@"Can't get image - %@",[myerror localizedDescription]);
};

// *** Set Asset URL to load Image (assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG) ***
[NSURL *asseturl = [NSURL URLWithString:yourURL];
// *** Create ALAssetsLibrary Instance and load Image ***
ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
[assetslibrary assetForURL:asseturl
            resultBlock:resultblock
           failureBlock:failureblock];

不要忘記在項目中導入AssetsLibrary框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM