https://github.com/longitachi/zlphotobrowser
Wechat-like image picker. Support select photos, videos, gif and livePhoto. Support edit image and crop video. 微信样式的图片选择器,支持预览/相册内拍照及录视频、拖拽/滑动选择,编辑图片/视频,支持多语言国际化等功能;
https://github.com/longitachi/zlphotobrowser
editimage editvideo gallery gif imagepicker ios livephoto photolibrary photos picker swift
Last synced: 8 days ago
JSON representation
Wechat-like image picker. Support select photos, videos, gif and livePhoto. Support edit image and crop video. 微信样式的图片选择器,支持预览/相册内拍照及录视频、拖拽/滑动选择,编辑图片/视频,支持多语言国际化等功能;
- Host: GitHub
- URL: https://github.com/longitachi/zlphotobrowser
- Owner: longitachi
- License: mit
- Created: 2015-12-01T03:17:54.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-04-07T08:08:24.000Z (24 days ago)
- Last Synced: 2025-04-23T06:58:23.590Z (8 days ago)
- Topics: editimage, editvideo, gallery, gif, imagepicker, ios, livephoto, photolibrary, photos, picker, swift
- Language: Swift
- Homepage:
- Size: 98.6 MB
- Stars: 4,865
- Watchers: 73
- Forks: 993
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://cocoapods.org/pods/ZLPhotoBrowser)
[](https://github.com/Carthage/Carthage)
[](https://swift.org/package-manager/)
[](https://raw.githubusercontent.com/longitachi/ZLPhotoBrowser/master/LICENSE)
[](https://img.shields.io/badge/Platforms-iOS-blue?style=flat)

[](https://github.com/longitachi/ZLPhotoBrowser/wiki/How-to-use-(Swift))
----------------------------------------
English | [简体中文](https://github.com/longitachi/ZLPhotoBrowser/blob/master/README_CN.md)
ZLPhotoBrowser is a Wechat-like image picker. Support select normal photos, videos, gif and livePhoto. Support edit image and crop video.
### Directory
* [Features](#features)
* [Requirements](#requirements)
* [Usage](#usage)
* [Change Log](#change-log)
* [Languages](#languages)
* [Installation(Support Cocoapods/Carthage/SPM)](#installation)
* [Support](#support)
* [Demo Effect](#demo-effect)Detailed usage of `Swift` and `OC`, please refer to [Wiki](https://github.com/longitachi/ZLPhotoBrowser/wiki).
If you only want to use the image edit feature, please move to [ZLImageEditor](https://github.com/longitachi/ZLImageEditor).
### Features
- [x] Support SwiftUI.
- [x] Portrait and landscape.
- [x] Two framework style.
- [x] Preview selection (Support drag and drop).
- [x] Library selection (Support sliding selection).
- [x] Image/Gif/LivePhoto/Video.
- [x] Customize the maximum number of previews or selection, the maximum and minimum optional duration of the video.
- [x] Customize the number of columns displayed in each row.
- [x] Image editor (Draw/Crop/Image sticker/Text sticker/Mosaic/Filter/Adjust(Brightness, Contrast and Saturation)), (Draw color can be customized; Crop ratio can be customized; Filter effect can be customized; You can choose the editing tool you want).
- [x] Video editor.
- [x] Custom camera.
- [x] Multi-language.
- [x] Selected index.
- [x] Selected/unselectable state shadow mask.
- [x] The selected photos are displayed at the bottom of the big picture interface, which can be dragged and sorted.
- [x] The camera's internal photo cell can displays the captured images of the camera.
- [x] Customize font.
- [x] The color of each part of the framework can be customized (Provide dynamic color can support light/dark mode).
- [x] Customize images.> If you have good needs and suggestions in use, or encounter any bugs, please create an issue and I will reply in time.
### Requirements
* iOS 10.0
* Swift 5.x
* Xcode 13.x
### Usage
- Preview selection
```swift
let ps = ZLPhotoPreviewSheet()
ps.selectImageBlock = { [weak self] results, isOriginal in
// your code
}
ps.showPreview(animate: true, sender: self)
```
- Library selection
```swift
let ps = ZLPhotoPreviewSheet()
ps.selectImageBlock = { [weak self] results, isOriginal in
// your code
}
ps.showPhotoLibrary(sender: self)
```
- Pay attention, you need to add the following key-value pairs in your app's Info.plist```
// If you don’t add this key-value pair, multiple languages are not supported, and the album name defaults to English
Localized resources can be mixed YES
Privacy - Photo Library Usage DescriptionPrivacy - Camera Usage Description
Privacy - Microphone Usage Description
```
### Change Log
> [More logs](https://github.com/longitachi/ZLPhotoBrowser/blob/master/CHANGELOG.md)
```
● 4.6.0.1
Add:
Support SwiftUI.
Support for locked output orientation in custom camera.
Optimize the playback experience of album videos and online videos.
Add will-capture-block for customizable capture actions.
Replace ZLPhotoPreviewSheet with ZLPhotoPicker. The permission of ZLPhotoPreviewSheet will be changed to private later.
Enhance the text sticker feature by adding text outline and shadow effects.
Fix:
Fixed the bug that the time of automatically stopping recording is incorrect when clicking to record a video.
Fix the issue where the width and height calculations of some videos are inaccurate when previewing online videos.
● 4.5.8
Add:
Add video stabilization mode to camera configuration.
Fix:
Fix video recording with both torch-on and wide cameras.
Fixed the problem of freezing caused by calculating the frame when previewing network videos.
Fix the memory leak issue in the ZLEditImageViewController interface.
After the initial request for album permissions is denied, the permission guidance alert will no longer be displayed.
Correct eraser misalignment after image cropping.
● 4.5.7
Add:
Custom camera supports tap-to-record mode.
Custom camera supports wide-angle lenses on iOS 13 and above.
Custom camera allows adding a custom overlay view.
Video editing controller adds a callback block for canceling edits.
Added `ZLImagePreviewControllerDelegate` protocol to receive event callbacks in ZLImagePreviewController.
...
```### Languages
🇨🇳 Chinese, 🇺🇸 English, 🇯🇵 Japanese, 🇫🇷 French, 🇩🇪 German, 🇷🇺 Russian, 🇻🇳 Vietnamese, 🇰🇷 Korean, 🇲🇾 Malay, 🇮🇹 Italian, 🇮🇩 Indonesian, 🇪🇸 Spanish, 🇵🇹 Portuguese, 🇹🇷 Turkish, 🇸🇦 Arabic, 🇳🇱 Dutch.### Installation
There are four ways to use ZLPhotoBrowser in your project:- using CocoaPods
- using Carthage
- using Swift Package Manager
- manual install (build frameworks or embed Xcode Project)#### CocoaPods
To integrate ZLPhotoBrowser into your Xcode project using CocoaPods, specify it to a target in your Podfile:```
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!target 'MyApp' do
# your other pod
# ...
pod 'ZLPhotoBrowser'
end
```Then, run the following command:
```
$ pod install
```> If you cannot find the latest version, you can execute `pod repo update` first
#### Carthage
To integrate ZLPhotoBrowser into your Xcode project using Carthage, specify it in your Cartfile:```
github "longitachi/ZLPhotoBrowser"
```Then, run the following command to build the ZLPhotoBrowser framework:
```shell
$ carthage update
```If you get an error like `Building universal frameworks with common architectures is not possible. The device and simulator slices for "ZLPhotoBrowser" both build for: arm64
Rebuild with --use-xcframeworks to create an xcframework bundle instead.` [Click this link](https://github.com/Carthage/Carthage/blob/master/Documentation/Xcode12Workaround.md).#### Swift Package Manager
1. Select File > Add Packages. Enter https://github.com/longitachi/ZLPhotoBrowser.git in the "Choose Package Repository" dialog.
2. In the next page, specify the version resolving rule as "Up to Next Major" with "4.6.0.1" as its earliest version.
3. After Xcode checking out the source and resolving the version, you can choose the "ZLPhotoBrowser" library and add it to your app target.### Support
* [**★ Star**](#) this repo.
* Support withor
or
### Demo Effect
- Selection


- Image editor

- Video editor

- Multi-language

- Custom camera
