zoukankan      html  css  js  c++  java
  • iOS 根据图片URL从本地相册获取图片

    最近做一个聊天的项目,需要发送图片后读取本地图片显示到列表里。刚开始的时候,天真的认为可以用SDWebImage直接加载,然后并不能行。

    于是在网上搜了搜,如何根据从相册获取的UIImagePickerControllerReferenceURL读取图片, 代码如下:

    #import "ViewController.h"
    #import <AssetsLibrary/AssetsLibrary.h>
    
    @interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
    - (IBAction)showImagePickerVC:(id)sender;
    @property (weak, nonatomic) IBOutlet UIImageView *imageView;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];   
    }
    

     弹出图片选择器

    - (IBAction)showImagePickerVC:(id)sender {
        
        UIImagePickerController *imagePickerVC = [[UIImagePickerController alloc] init];
        
        imagePickerVC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        imagePickerVC.allowsEditing = YES;
        
        imagePickerVC.delegate = self;
        
        [self presentViewController:imagePickerVC animated:YES completion:nil];
        
    }
    

     回调

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        NSLog(@"%@", info);
        NSURL *imagePath = info[@"UIImagePickerControllerReferenceURL"];
    
        if ([[[imagePath scheme] lowercaseString] isEqualToString:@"assets-library"]) {
            
            // Load from asset library async
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                @autoreleasepool {
                    @try {
                        ALAssetsLibrary *assetslibrary = [[ALAssetsLibrary alloc] init];
                        [assetslibrary assetForURL:imagePath
                                       resultBlock:^(ALAsset *asset){
                                           ALAssetRepresentation *rep = [asset defaultRepresentation];
                                           CGImageRef iref = [rep fullScreenImage];
                                           if (iref) {
                                               //进行UI修改
                                               dispatch_sync(dispatch_get_main_queue(), ^{
                                                   _imageView.image = [[UIImage alloc] initWithCGImage:iref];
                                               });
                                               
                                            }
                    
                                       }
                                      failureBlock:^(NSError *error) {
                                          
                                          NSLog(@"从图库获取图片失败: %@",error);
                                          
                                      }];
                    } @catch (NSException *e) {
                        NSLog(@"从图库获取图片异常: %@", e);
                    }
                }
            });
            
        }
        
        [picker dismissViewControllerAnimated:YES completion:nil];
    }
    
  • 相关阅读:
    butterknife异常提示:attribute value must be constant
    SharedPreferences第一次使用后HashMap将常驻内存
    js获取元素的innerText属性为什么为空
    针对focus和blur的Dom事件触发顺序
    android中View的GONE和INVISIBLE的原理
    HTML中div以及span等元素获取焦点
    android MotionEvent获得当前位置
    IE10 透明背景的div无法遮罩
    jquery中.attr('value')和.val()的区别
    __proto__和protaotype的区分
  • 原文地址:https://www.cnblogs.com/pretty-guy/p/4548761.html
Copyright © 2011-2022 走看看