iOS中获取系统相册中的图片

【学习ios之路:UI系列】获取通过UIImagePackerController获取的系统相册图片的名称信息及保存系统相册到本地 通过IUImagePickerController方法获取系统的相册,而想要得到从系统相册得到的图片的信息需要以下几步: 1:获得从UIImagePicker选择的照片的Assert; 2:得到Assert的ALAssertRepresentation; 3:ALAssertRepresentation有个filename的属性 代码具体如下: 该方法是UIImagePickerCo 阅读详情

一.获取单张图片

思路:
  • 1.利用UIImagePickerController可以从系统自带的App(照片\相机)中获得图片
  • 2.设置代理,遵守代理协议
    • 注意这个UIImagePickerController类比较特殊,需要遵守两个代理协议
      @interface ViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
  • 3.实现代理的方法didFinishPickingMediaWithInfo
- (void)getImageFromIpc
{
    // 1.判断相册是否可以打开
    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) return;
    // 2. 创建图片选择控制器
    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
    /**
     typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
     UIImagePickerControllerSourceTypePhotoLibrary, // 相册
     UIImagePickerControllerSourceTypeCamera, // 用相机拍摄获取
     UIImagePickerControllerSourceTypeSavedPhotosAlbum // 相簿
     }
     */
    // 3. 设置打开照片相册类型(显示所有相簿)  
    ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    // ipc.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    // 照相机
    // ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
    // 4.设置代理
    ipc.delegate = self;
    // 5.modal出这个控制器
    [self presentViewController:ipc animated:YES completion:nil];
}

#pragma mark -- <UIImagePickerControllerDelegate>--
// 获取图片后的操作
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
    // 销毁控制器
    [picker dismissViewControllerAnimated:YES completion:nil];

    // 设置图片
    self.imageView.image = info[UIImagePickerControllerOriginalImage];
}

二.获取多张图片

思路:
  • 导入头文件#import <Photos/Photos.h>
  • PHAsset : 一个资源, 比如一张图片\一段视频
  • PHAssetCollection : 一个相簿
  • PHImageManager 图片管理者,是单例,发送请求才能从asset获取图片
  • PHImageRequestOptions图片请求选项
  • 注意:这个类是iOS8开始推广,iOS9开始废弃之前的方法
    系统适配iOS8之前,用下面这个库里面的API
    #import <AssetsLibrary/AssetsLibrary.h>
1.获得所有相簿的原图
- (void)getOriginalImages
{
    // 获得所有的自定义相簿
    PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    // 遍历所有的自定义相簿
    for (PHAssetCollection *assetCollection in assetCollections) {
        [self enumerateAssetsInAssetCollection:assetCollection original:YES];
    }

    // 获得相机胶卷
    PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
    // 遍历相机胶卷,获取大图
    [self enumerateAssetsInAssetCollection:cameraRoll original:YES];
}
2.获得所有相簿中的缩略图
- (void)getThumbnailImages
{
    // 获得所有的自定义相簿
    PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    // 遍历所有的自定义相簿
    for (PHAssetCollection *assetCollection in assetCollections) {
        [self enumerateAssetsInAssetCollection:assetCollection original:NO];
    }
    // 获得相机胶卷
    PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
    [self enumerateAssetsInAssetCollection:cameraRoll original:NO];
}
3.遍历相册
/**
 *  遍历相簿中的所有图片
 *  @param assetCollection 相簿
 *  @param original        是否要原图
 */
- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original
{
    NSLog(@"相簿名:%@", assetCollection.localizedTitle);

    PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
    // 同步获得图片, 只会返回1张图片
    options.synchronous = YES;

    // 获得某个相簿中的所有PHAsset对象
    PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];
    for (PHAsset *asset in assets) {
        // 是否要原图
        CGSize size = original ? CGSizeMake(asset.pixelWidth, asset.pixelHeight) : CGSizeZero;

        // 从asset中获得图片
        [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
            NSLog(@"%@", result);
        }];
    }
}


文/船长_(简书作者)
原文链接:http://www.jianshu.com/p/022c41b8f82c
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
iOS开发 获取系统相册最后一张图片 、 截屏广播 0. 截屏广播  UIApplicationUserDidTakeScreenshotNotification 1. iOS9.0以下,获取系统相册最后一张照片 //#import //NS_DEPRECATED_IOS(4_0, 9_0, "Use UIImageOrientation in the Photos framework instead"); A 阅读详情

相关推荐

iOS中访问照片库的编程方法

打开Xcode,选择你的工程目录,在Targets下选择你的项目,然后在General选项卡的Linked Frameworks and Libraries部分点击加号按钮,搜索并添加"Photos.framework"。在iOS开发中,我们经常需要访问用户的照片库,以便展示、编辑或上传照片。在这里,你可以获取照片的各种信息,例如唯一标识符、创建日期等。在授权回调中,我们根据不同的授权状态执行相应的操作。,表示用户拒绝了授权或权限受限,我们可以在控制台输出相应的提示信息。方法,用于读取照片库中的照片。

HackCyberX的博客 440

UIImagePickerController从拍照、图库、相册获取图片

iOS 获取图片有三种方法: 1. 直接调用摄像头拍照 2. 从相册中选择 3. 从图库中选择 UIImagePickerController 是系统提供的用来获取图片和视频的接口; 用UIImagePickerController 类来获取图片视频,大体分为以下几个步骤: 1. 初始化UIImagePickerController 类; 2. 设置UII

MayerF的专栏 915

ios-一行代码从拍照、图库、相册获取图片.zip

github地址:https://github.com/zhangdadi/HDPhotoHelper ,喜欢的点击收藏,谢谢。 选择照片如下: [[HDPhotoHelper creatWithSourceType:UIImagePickerControllerSourceTypePhotoLibrary] showWithSelectImageBlock:^(id data) { NSLog(@"照片数据:%@", data); }];}

IOS开发(获取本地相册,存进本地相册、截图)

- (IBAction)goodsButton1Touch:(id)sender { //拿到获取相册的权限 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]){ UIImagePickerController *pic = [[UIImagePickerController alloc] init]; pic

weixin_46926959的博客 1414

iOS:实现拍照和从相册获取照片

iOS:实现拍照和从相册获取照片,使用iOS原生控件UIImagePickerController实现拍照和相册获取。

在 NVIDIA Orin (JetPack 6.0) 上配置 PyTorch 2.4 + Torchvision 0.19 的完整避坑指南

本文提供在NVIDIA Jetson Orin设备上,基于JetPack 6.0系统配置PyTorch 2.4与Torchvision 0.19环境的完整指南。通过使用Miniconda环境隔离、安装特定版本PyTorch夜间构建版、编译匹配的Torchvision源码等步骤,解决版本不匹配、CUDA支持等常见问题,确保AI开发环境稳定可用。

weixin_29179311的博客 363

iOS 基于PhotoKit 获取系统所有相册 以及所有照片 包括iCloud的处理 细节详解及实战代码

前言 最近在做一个相册的项目,一开始觉得项目没什么难度,可是真正上手做了之后,发现难度不小,苹果新推出Photokit之后,获取相册中图片对象是快的,可是在获取到具体图片个人实战比较慢,同时还有icloud的问题,那么本片博客就带你一起解决这些问题。 第一步 获取系统所有相册 import Photos private var allAsset:[PHAsset] = [] //相册中所有的照片 ...

j_xbing的博客 6108

使用podman 容器化安装DIFY

本文阐述了使用podman容器化安装DIFY的过程

wengad的博客 1901

[IOS]——获取系统相册并且加载图片

效果图 这是获取系统相册的代码链接 获取系统相册链接 下面的是从系统相册中加载出图片 #pragma mark - 实现picView的代理方法 -(void)clickpicView:(UIButton *)btn { //拿到获取相册的权限 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]){ UIImagePicke

kk177的博客 927

华为云Stack应急预案实战:从IaaS到PaaS的故障场景与恢复指南

本文详细解析华为云Stack应急预案在IaaS到PaaS层的故障场景与恢复实践,涵盖计算节点故障、存储链路中断等典型问题。通过标准化操作流程和实战案例,帮助企业在突发故障时快速恢复业务,确保高可用性。华为云Stack的应急预案体系经过金融、政务等严苛场景验证,恢复时间指标(RTO)控制在30分钟以内。

weixin_33724059的博客 373

苍穹外卖项目面试总结话术

美食速递这个项目最初是我参与制作的大创项目,是一款为中南学生提供校园外卖送至宿舍服务的软件,包含系统管理后台和小程序端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对食堂各个窗口、员工、订单、菜品等进行维护管理;小程序端可以在线浏览菜品、添加购物车、下单等,由学生兼职做跑腿送餐上门服务。这是个前后端分离的项目,我主要是负责后端的用户登录、员工管理,菜品管理,订单管理模块的编码实现。

qq_45195447的博客 1万+

IOS swift 获取系统相册和相册图片名称

【代码】IOS swift 获取系统相册和相册图片名称。

cai_huaer的博客 1283

【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning

ChangeCLIP论文及代码使用详解。持续更新变化检测最新论文,欢迎订阅本专栏。

向上生长的程序媛的博客 1335

Qt for iOS:使用UIImagePickerController获取一个系统相册中的图片

首先,感谢 艾列克斯 ,给予我iOS原生开发的支持 本示例中,主要代码,也来自于艾列克斯 这位大牛没有博客,所以没有链接可以给出,请谅解。 ~~~~~~~~~~代码分割线~~~~~~~~~~ pro文件需要添加 ios{ LIBS += -framework Foundation -framework UIKit OBJECTIVE_SO

Jason’s home 3439

YOLO26改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。YOLO26主要用于轻量化应用部署,相关轻量化改进与其整体架构非常适配。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 1091

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

王老师青少年编程 990

iOS开发之获取系统相册中的图片与视频(内带url转换)

iOS开发之获取系统相册中的图片与视频(内带url转换)     #import   // 必须导入 // 照片原图路径 #defineKOriginalPhotoImagePath   [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAt

cyshuxin的专栏 962

深入Kafka:从SASL_PLAINTEXT到SASL_SSL的迁移之旅

本文详细介绍了如何将Apache Kafka从SASL_PLAINTEXT模式迁移到更安全的SASL_SSL模式。内容包括创建密钥库和信任库、生成证书签名请求、设置证书颁发机构、签署CSR以及修改Kafka配置文件的完整步骤。针对常见问题如SSL握手失败和循环连接尝试提供了解决方案。通过实施这些步骤,可以确保Kafka数据传输的安全性,实现客户端身份验证和加密传输。文章强调在操作过程中需仔细检查配置文件和证书信息,以确保迁移顺利完成。

m0_74337424的博客 84

ios学习--获取通过UIImagePackerController获取的系统相册 图片&视频 的名称信息

首先,先了解以下内容:     通过IUImagePickerController方法获取系统的相册,而想要得到从系统相册得到的图片的信息需要以下几步: 1:获得从UIImagePicker选择的照片的Assert; 2:得到Assert的ALAssertRepresentation; 3:ALAssertRepresentation有个filename的属性

zzzzzdddddxxxxx的专栏 1535

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IOS获取系统相册图片

获取系统相册图片,首先遵守代理协议@interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate>@end添加点击事件 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

lee727n的博客 1046

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

iOS获取系统相册中的图片

1.利用的UIImagePickerController可以从系统自带的应用程序(照片\相机)中获得图片 2.设置代理,遵守代理协议 注意这个UIImagePickerController类比较特殊,需要遵守两个代理协议@interface ViewController () <UIImagePickerControllerDelegate, UINavigationControllerDele

meiyulong518的博客 485

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

iOS开发swift如何调用系统相册和相机获取图片设置用户头像

iOS开发swift如何调用系统相册和相机获取图片都是用UIImagePickerController  1.加上protocol   UIImagePickerControllerDelegate,UINavigationControllerDelegate 2.打开系统相册或相机的代码  pick.allowsEditing = true;(这个控制要不要进入

casun_li的专栏 1263

ios读取系统相册以及获取图片的名字

ios读取系统相册以及获取图片的名字

nhfc99的专栏 1万+
上一篇: iOS_根据文字字数动态确定Label宽高
下一篇: ios开发navigationController pushViewController 方式多次跳转 怎么返回到最上层,怎么返回到指定的某一层
iOS_Water
博客等级 码龄12年 8粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值