11 Star 63 Fork 15

枫叶丶 / HXPhotoPicker

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

中文 | English

一款图片/视频选择器-支持LivePhoto、GIF选择、iCloud/网络资源在线下载、图片/视频编辑

目录

功能

  • UI 外观支持浅色/深色/自动/自定义
  • 支持多选/混合内容选择
  • 支持的媒体类型:
    • Photo
    • GIF
    • Live Photo
    • Video
  • 支持的本地资源类型:
    • Photo
    • Video
    • GIF
    • Live Photo
  • 支持的网络资源类型:
    • Photo
    • Video
  • 支持下载iCloud上的资源
  • 支持手势返回
  • 支持滑动选择
  • 编辑图片(支持动图、网络资源)
    • 涂鸦
    • 贴纸
    • 文字
    • 裁剪
    • 旋转任意角度
    • 自定义蒙版
    • 马赛克
    • 画面调整
    • 滤镜
  • 编辑视频(支持网络资源)
    • 涂鸦
    • 贴纸(支持GIF)
    • 文字
    • 配乐(支持歌词字幕)
    • 裁剪时长
    • 裁剪尺寸
    • 旋转任意角度
    • 自定义蒙版
    • 画面调整
    • 滤镜
  • 相册展现方式
    • 单独列表
    • 弹窗
  • 多平台支持
    • iOS
    • iPadOS
    • Mac Catalyst
  • 国际化支持
    • 🇨🇳 简体中文 (zh-Hans)
    • 🇨🇳 繁体中文 (zh-Hant)
    • 🇬🇧 英文 (en)
    • 🇯🇵 日语 (ja)
    • 🇰🇷 韩语 (ko)
    • 🇹🇭 泰语 (th)
    • 🇮🇳 印尼语 (id)
    • 🇻🇳 越南语 (vi)
    • 🇷🇺 俄罗斯 (ru)
    • 🇩🇪 德国 (de)
    • 🇫🇷 法国 (fr)
    • 🇸🇦 阿拉伯 (ar)
    • ✍️ 自定义语言 (custom)
    • 🤝 更多支持... (欢迎PR)

要求

  • iOS 12.0+
  • Xcode 12.5+
  • Swift 5.4+

安装

Swift Package Manager

⚠️ 需要 Xcode 12.0 及以上版本来支持资源文件/本地化文件的添加。

dependencies: [
    .package(url: "https://github.com/SilenceLove/HXPhotoPicker.git", .upToNextMajor(from: "4.1.5"))
]

CocoaPods

将下面内容添加到 Podfile,并执行依赖更新。


iOS 12.0+
pod 'HXPhotoPicker'

/// 不包含 Kingfisher,相机不包含定位功能
pod `HXPhotoPicker/Lite`

/// 相机不包含定位功能
pod `HXPhotoPicker/NoLocation`

/// 只有选择器
pod `HXPhotoPicker/Picker`
pod `HXPhotoPicker/Picker/Lite`

/// 只有编辑器
pod `HXPhotoPicker/Editor`
pod `HXPhotoPicker/Editor/Lite`

/// 只有相机
pod `HXPhotoPicker/Camera`
/// 不包含定位功能
pod `HXPhotoPicker/Camera/Lite`

iOS 10.0+
pod 'HXPhotoPicker-Lite'
pod 'HXPhotoPicker-Lite/Picker'
pod 'HXPhotoPicker-Lite/Editor'
pod 'HXPhotoPicker-Lite/Camera'

v4.0以下的ObjC版本
pod 'HXPhotoPickerObjC'

准备工作

按需在你的 Info.plist 中添加以下键值:

Key 模块 备注
NSPhotoLibraryUsageDescription Picker 允许访问相册
NSPhotoLibraryAddUsageDescription Picker 允许保存图片至相册
PHPhotoLibraryPreventAutomaticLimitedAccessAlert Picker 设置为 YES iOS 14+ 以禁用自动弹出添加更多照片的弹框(Picker 已适配 Limited 功能,可由用户主动触发,提升用户体验)
NSCameraUsageDescription Camera 允许使用相机
NSMicrophoneUsageDescription Camera 允许使用麦克风

快速上手

import HXPhotoPicker

class ViewController: UIViewController {

    func presentPickerController() {
        // 设置与微信主题一致的配置
        let config = PickerConfiguration.default
        
        // 方法一:async/await
        let images: [UIImage] = try await Photo.picker(config)
        let urls: [URL] = try await Photo.picker(config)
        let urlResult: [AssetURLResult] = try await Photo.picker(config)
        let assetResult: [AssetResult] = try await Photo.picker(config)
        
        let pickerResult = try await Photo.picker(config)
        let images: [UIImage] = try await pickerResult.objects()
        let urls: [URL] = try await pickerResult.objects()
        let urlResults: [AssetURLResult] = try await pickerResult.objects()
        let assetResults: [AssetResult] = try await pickerResult.objects()
        
        // 方法二:
        let pickerController = PhotoPickerController(picker: config)
        pickerController.pickerDelegate = self
        // 当前被选择的资源对应的 PhotoAsset 对象数组
        pickerController.selectedAssetArray = selectedAssets 
        // 是否选中原图
        pickerController.isOriginal = isOriginal
        present(pickerController, animated: true, completion: nil)
        
        // 方法三:
        Photo.picker(
            config
        ) { result, pickerController in
            // 选择完成的回调
            // result 选择结果
            //  .photoAssets 当前选择的数据
            //  .isOriginal 是否选中了原图
            // photoPickerController 对应的照片选择控制器
        } cancel: { pickerController in
            // 取消的回调
            // photoPickerController 对应的照片选择控制器 
        }
    }
}

extension ViewController: PhotoPickerControllerDelegate {
    
    /// 选择完成之后调用
    /// - Parameters:
    ///   - pickerController: 对应的 PhotoPickerController
    ///   - result: 选择的结果
    ///     result.photoAssets  选择的资源数组
    ///     result.isOriginal   是否选中原图
    func pickerController(
        _ pickerController: PhotoPickerController, 
        didFinishSelection result: PickerResult
    ) {
        // async/await
        let images: [UIImage] = try await result.objects()
        let urls: [URL] = try await result.objects()
        let urlResults: [AssetURLResult] = try await result.objects()
        let assetResults: [AssetResult] = try await result.objects()
        
        result.getImage { (image, photoAsset, index) in
            if let image = image {
                print("success", image)
            }else {
                print("failed")
            }
        } completionHandler: { (images) in
            print(images)
        }
    }
    
    /// 点击取消时调用
    /// - Parameter pickerController: 对应的 PhotoPickerController
    func pickerController(didCancel pickerController: PhotoPickerController) {
        
    }
}

如何获取

获取 UIImage

/// 如果为视频的话获取则是视频封面
// async/await
// compression: 压缩参数,不传则不压缩 
let image: UIImage = try await photoAsset.object(compression)

// compressionQuality: 压缩参数,不传则不压缩 
photoAsset.getImage(compressionQuality: compressionQuality) { image in
    print(image)
}

获取 URL

// async/await 
// compression: 压缩参数,不传则不压缩 
let url: URL = try await photoAsset.object(compression)
let urlResult: AssetURLResult = try await photoAsset.object(compression)

// compression: 压缩参数,不传则不压缩
photoAsset.getURL(compression: compression) { result in
    switch result {
    case .success(let urlResult):
        // 媒体类型
        switch urlResult.mediaType {
        case .photo:
            // 图片
        case .video:
            // 视频
        }
        
        // url类型
        switch urlResult.urlType {
        case .local:
            // 本地URL
        case .network:
            // 网络URL
        }
        
        // 获取的地址
        print(urlResult.url)
        
        // LivePhoto 里面包含的 图片和视频 url
        print(urlResult.livePhoto) 
        
    case .failure(let error):
        print(error)
    }
}

更新日志

最近更新
版本 发布时间 Xcode Swift iOS
v4.1.5 2024-01-10 15.0.0 5.9.0 12.0+
历史记录
版本 发布时间 Xcode Swift iOS
v4.1.4 2023-12-24 15.0.0 5.9.0 12.0+
v4.1.3 2023-12-16 15.0.0 5.9.0 12.0+
v4.1.2 2023-12-02 15.0.0 5.9.0 12.0+
v4.1.1 2023-11-14 15.0.0 5.9.0 12.0+
v4.1.0 2023-11-07 15.0.0 5.9.0 12.0+
v4.0.9 2023-10-22 15.0.0 5.9.0 12.0+
v4.0.8 2023-10-13 15.0.0 5.9.0 12.0+
v4.0.7 2023-09-23 14.3.0 5.7.0 12.0+
v4.0.6 2023-09-09 14.3.0 5.7.0 12.0+
v4.0.5 2023-08-12 14.3.0 5.7.0 12.0+
v4.0.4 2023-07-30 14.3.0 5.7.0 12.0+
v4.0.3 2023-07-06 14.3.0 5.7.0 12.0+
v4.0.2 2023-06-24 14.3.0 5.7.0 12.0+
v4.0.1 2023-06-17 14.3.0 5.7.0 12.0+
v4.0.0 2023-06-15 14.3.0 5.7.0 12.0+
v3.0.0 2022-09-18 14.0.0 ----- 8.0+

演示效果

选择照片 图片编辑 视频编辑
IMAGE ALT TEXT IMAGE ALT TEXT IMAGE ALT TEXT

界面展示

版权协议

HXPhotoPicker 基于 MIT 协议进行分发和使用,更多信息参见协议文件

支持❤️

Buy Me A Coffee

Stargazers over time

🔝回到顶部

MIT License Copyright (c) 2017 LoveZYForever Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

图片/视频选择器 - 支持LivePhoto、GIF图片选择、3DTouch预览、在线下载iCloud上的资源、编辑图片/视频、浏览网络图片 功能 Imitation wx photo/image picker - support for LivePhoto, GIF image selection, 3DTouch preview, Download the resources on iCloud online, browse the web image function 展开 收起
Objective-C 等 4 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Objective-C
1
https://gitee.com/fengyeG/HXPhotoPicker.git
git@gitee.com:fengyeG/HXPhotoPicker.git
fengyeG
HXPhotoPicker
HXPhotoPicker
master

搜索帮助

14c37bed 8189591 565d56ea 8189591