【问题标题】:set uiimageview from saved camera roll reference url从保存的相机胶卷参考 url 设置 uiimageview
【发布时间】:2014-04-20 15:26:17
【问题描述】:

在资产库如何与参考 url 一起工作时,我可能还不明白,但我现在将参考保存在 nsdefaults 中。我想在屏幕加载但它不起作用时显示来自参考的图像。这是我获取图像的方式:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
  [[NSUserDefaults standardUserDefaults]setObject:[info objectForKey:UIImagePickerControllerReferenceURL] forKey:@"profilePic"];
  [pics addObject:[info objectForKey:UIImagePickerControllerReferenceURL]];
  [library assetForURL:[pics objectAtIndex:pics.count-1] resultBlock:^(ALAsset *asset){
      UIImage *copyofOriginal = [UIImage imageWithCGImage:[[asset defaultRepresentation]fullScreenImage] scale:0.5 orientation:UIImageOrientationUp];
      profilePic.image = copyofOriginal;
  }failureBlock:nil];
}

现在,当应用程序再次启动时,我正试图像这样恢复它,但它给了我一个空白图像:

if (![[[NSUserDefaults standardUserDefaults]valueForKey:@"profilePic"] isEqualToString:@""]) {
    [library assetForURL:[NSURL URLWithString:[[NSUserDefaults standardUserDefaults]valueForKey:@"profilePic"]] resultBlock:^(ALAsset *asset){
        UIImage *copyofOriginal = [UIImage imageWithCGImage:[[asset defaultRepresentation]fullScreenImage] scale:0.5 orientation:UIImageOrientationUp];
        profilePic.image = copyofOriginal;
    }failureBlock:nil];
}

记录 [info objectForKey: UIImage...] 和 NSUserDefaults 中保存的值给了我完全相同的参考 url。怎么没设置?

【问题讨论】:

标签: ios objective-c uiimageview alassetslibrary


【解决方案1】:

如何让用户从图库中选择图片?

假设你有一个控制器 MyDummyController,它显示了一个“Pick An Image”按钮。点击该按钮时,您想打开手机图库。首先确保你的控制器实现了 UIImagePickerControllerDelegate。

@interface MyDummyController : UIViewController<UIImagePickerControllerDelegate>

接下来,在你的实现文件中实现以下方法。

    // make sure this method is invoked when you tap "Pick An Image" button
-(void)onTapPickAnImage
{
   UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
   imagePicker.delegate = self;
   imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
   [self presentViewController:imagePicker animated:YES completion:nil];
}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
       // here is the image user selected
       UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
       // here is the URL to the image
       NSURL *url = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
    }

如何从图片 URL 中提取字符串引用?

在不同的持久化系统中,例如 Core Data,你不能直接保存一个 NSURL。这意味着,如果您想在某处存储所选图像的引用,则需要将其存储在字符串中。它可以像下面这样完成:

NSURL *url = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
NSString *ref = url.absoluteString;
// now you can persist your string reference somewhere

如何使用字符串引用再次加载图像?

// here we are loading the string reference to image we want to load
NSString *ref = [self loadMyImageRef]; // loadMyImageRef is a dummy method, you can put your implementation here

// ALAssetsLibrary provides a way to access photos/videos in gallery programmatically
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:[NSURL URLWithString:ref] resultBlock:^(ALAsset *asset) {
   // here we have received the image data, now you can easily display it wherever you like
   UIImage *image = [UIImage imageWithCGImage:asset.defaultRepresentation.fullResolutionImage];
   NSLog(@"Image loaded successfully!");
} failureBlock:^(NSError *error) {
   NSLog(@"An error occurred while loading image: %@", error.description);
}];

来源:

http://www.to-string.com/2014/04/30/how-to-extract-string-reference-to-an-image-in-ios-and-then-load-the-image-later/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多