swift 将图片保存到本地_swift3.0 保存图片到本地,申请权限

1.info中写上

NSCameraUsageDescription

需要您的同意才能读取媒体资料库

NSLocationWhenInUseUsageDescription

需要您的同意才能读取媒体资料库

NSPhotoLibraryUsageDescription

需要您的同意才能读取媒体资料库

Privacy - Photo Library Usage Description

需要您的同意才能读取媒体资料库

2.保存

import Photos

//操作结果枚举

enum PhotoAlbumUtilResult {

case success, error, denied

}

//相册操作工具类

class PhotoAlbumUtil: NSObject {

public typealias completion = ((_ result: PhotoAlbumUtilResult) -> ())

//判断是否授权

class func isAuthorized() -> Bool {

return PHPhotoLibrary.authorizationStatus() == .authorized ||

PHPhotoLibrary.authorizationStatus() == .notDetermined

}

//保存图片到相册

class func saveImageInAlbum(image: UIImage, albumName: String,

completion: completion?) {

//权限验证

if !isAuthorized() {

completion?(.denied)

return

}

var assetAlbum: PHAssetCollection?

//如果指定的相册名称为空,则保存到相机胶卷。(否则保存到指定相册)

if albumName.isEmpty {

let list = PHAssetCollection

.fetchAssetCollections(with: .smartAlbum, subtype: .smartAlbumUserLibrary,

options: nil)

assetAlbum = list[0]

} else {

//看保存的指定相册是否存在

let list = PHAssetCollection

.fetchAssetCollections(with: .album, subtype: .any, options: nil)

list.enumerateObjects({ (album, index, stop) in

let assetCollection = album

if albumName == assetCollection.localizedTitle {

assetAlbum = assetCollection

stop.initialize(to: true)

}

})

//不存在的话则创建该相册

if assetAlbum == nil {

PHPhotoLibrary.shared().performChanges({

PHAssetCollectionChangeRequest

.creationRequestForAssetCollection(withTitle: albumName)

}, completionHandler: { (isSuccess, error) in

self.saveImageInAlbum(image: image, albumName: albumName,

completion: completion)

})

return

}

}

//保存图片

PHPhotoLibrary.shared().performChanges({

//添加的相机胶卷

let result = PHAssetChangeRequest.creationRequestForAsset(from: image)

//是否要添加到相簿

if !albumName.isEmpty {

let assetPlaceholder = result.placeholderForCreatedAsset

let albumChangeRequset = PHAssetCollectionChangeRequest(for:

assetAlbum!)

albumChangeRequset!.addAssets([assetPlaceholder!] as NSArray)

}

}) { (isSuccess: Bool, error: Error?) in

if isSuccess {

completion?(.success)

} else{

print(error!.localizedDescription)

completion?(.error)

}

}

}

}

3.使用

PhotoAlbumUtil.saveImageInAlbum(image: image, albumName: "APP") { (result) in

DispatchQueue.main.async {

switch result{

case .success:

//"保存成功"

break

case .denied:

//没有权限,去设置里打开权限

let a = MyAlertController()

a.addOKView("去设置"){ (a) in

let url = URL(string: UIApplicationOpenSettingsURLString)

if let url = url, UIApplication.shared.canOpenURL(url) {

if #available(iOS 10, *) {

UIApplication.shared.open(url, options: [:],

completionHandler: {

(success) in

})

} else {

UIApplication.shared.openURL(url)

}

}

}

a.addCancelView()

a.show(self,title: "没有相册权限",message: "请您到 \"设置\" -> \"APP\" 开启相册权限", style: .alert )

break

case .error:

//"保存失败"

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值