Giter Club home page Giter Club logo

wangluhui / zlphotobrowser Goto Github PK

View Code? Open in Web Editor NEW

This project forked from longitachi/zlphotobrowser

0.0 1.0 0.0 76.54 MB

方便易用的相册多选框架,支持预览/相册内拍照及录视频、拖拽/滑动选择,3DTouch预览,编辑裁剪图片(滤镜)/视频,导出视频(可添加水印,粒子特效,视频转码);支持多语言国际化(中文简/繁,英语,日语,可手动切换);在线下载iCloud端图片;支持预览网络及本地图片/视频

License: MIT License

Ruby 0.19% Objective-C 99.81%

zlphotobrowser's Introduction

image

Version Carthage compatible  License Platform Language


运行Demo

下载完Demo请执行carthage update --platform iOS 如果Demo报 Duplicate interface definition for class'' 请到Build Phases -> Headers中,把Public中的头文件拖到Protect中即可

框架整体介绍

功能介绍

  • 支持横竖屏 (已适配iPhone X)
  • 预览快速选择、可设置预览最大数 (支持拖拽选择)
  • 直接进入相册选择 (支持滑动多选)
  • 编辑图片 (支持多种滤镜,可自定义裁剪比例)
  • 编辑视频
  • 查看、选择gif、LivePhoto(iOS9.0)、video
  • 3D Touch预览image、gif、LivePhoto、video
  • 混合选择image、gif、livePhoto、video
  • 在线下载iCloud照片
  • 控制选择video最大时长
  • 多语言国际化 (中文简/繁、英文、日文,可设置跟随系统和自行切换,可自定义多语言提示)
  • 相册内拍照按钮实时显示镜头捕捉画面
  • 已选择图片遮罩层标记
  • 预览已选择照片
  • 预览网络及本地 图片/视频 (图片支持长按保存至相册)
  • 相册内图片自定义圆角弧度
  • 自定义升序降序排列
  • 支持点击拍照及长按录制视频 (仿微信)
  • 开发者可自定义资源图片
  • 支持导出视频 (可指定导出视频尺寸、添加图片水印、粒子特效 ps:文字水印暂不支持)

Feature

如果您在使用中有好的需求及建议,或者遇到什么bug,欢迎随时issue,我会及时的回复

更新日志

更多更新日志

● 3.0.4: 添加视频选择最大最小个数限制; 解决网络gif图片无法播放的bug; fix已知bug;
● 3.0.3: 依赖库SDWebImage升级为5.0.2以上; 解决图片浏览器关闭时取消所有sd图片请求的bug; 支持直接调用相机;
● 3.0.0: 压缩bundle内图片; 支持直接选择iCloud照片,并添加解析图片超时时间属性;
● 3.0.0: 支持carthage; 去除GPUImage滤镜;
● 2.7.8: 添加iCloud图片加载进度条,支持iCloud视频播放;
● 2.7.6: 预览大图界面支持precent情况下的下拉返回;
● 2.7.5: 编辑图片支持自定义工具类型; bug fixed;
● 2.7.4: 横滑大图界面添加下拉返回; 不允许录制视频时候不请求麦克风权限;
● 2.7.1: 支持自定义导航返回按钮图片;
● 2.7.0: 图片资源加上前缀,解决9.0无法选择图片问题; 
● 2.6.9: 重构编辑图片功能,添加滤镜;
● 2.6.7: 优化视频编辑界面,极大减少进入时的等待时间;
● 2.6.6: Fix #216; 新增隐藏裁剪图片界面比例工具条功能;
● 2.6.5: 新增隐藏"已隐藏"照片及相册的功能; Fix #221, 优化预览网络图片/视频时根据url后缀判断的类型方式;
● 2.6.4: Fix #181, #184, #185;
● 2.6.3: 新增自定义多语言文本功能; 新增预览网络视频功能;
● 2.6.2: 新增是否保存已编辑图片的参数; 优化编辑图片旋转体验; 新增取消选择回调;
● 2.6.1: 新增导出视频添加粒子特效功能(如下雪特效); 新增编辑图片时旋转图片功能;

框架支持

最低支持:iOS 8.0

IDE:Xcode 9.0 及以上版本 (由于适配iPhone X使用iOS11api,所以请使用Xcode 9.0及以上版本)

使用方法

第一步:

  • Manually
    • 1.直接把PhotoBrowser文件夹拖入到您的工程中
    • 2.导入 Photos.framework及PhotosUI.framework
    • 3.项目依赖 SDWebImageGPUImage 所以需要导入这两个框架
    • 4.导入 "ZLPhotoBrowser.h"
  • Cocoapods
    • 1.在Podfile 中添加 pod 'ZLPhotoBrowser'
    • 2.执行 pod setup
    • 3.执行 pod installpod update
    • 4.导入 <ZLPhotoBrowser/ZLPhotoBrowser.h>
  • Carthage
    • 1.在Cartfile 中添加 github "longitachi/ZLPhotoBrowser"
    • 2.执行 carthage update
    • 3.导入 <ZLPhotoBrowser/ZLPhotoBrowser.h>

第二步:

  • 在项目plist配置文件中添加如下键值对
//如果不添加该键值对,则不支持多语言,相册名称默认为英文
Localized resources can be mixed YES
//或者右键plist文件Open As->Source Code 添加
<key>CFBundleAllowMixedLocalizations</key>
<true/>

//相册使用权限描述
Privacy - Photo Library Usage Description
//相机使用权限描述
Privacy - Camera Usage Description
//麦克风使用权限描述
Privacy - Microphone Usage Description

代码中调用

#import <ZLPhotoBrowser/ZLPhotoBrowser.h>
    
ZLPhotoActionSheet *ac = [[ZLPhotoActionSheet alloc] init];

// 相册参数配置,configuration有默认值,可直接使用并对其属性进行修改
ac.configuration.maxSelectCount = 5;
ac.configuration.maxPreviewCount = 10;

//如调用的方法无sender参数,则该参数必传
ac.sender = self;

// 选择回调
[ac setSelectImageBlock:^(NSArray<UIImage *> * _Nonnull images, NSArray<PHAsset *> * _Nonnull assets, BOOL isOriginal) {
    //your codes
}];

// 调用相册
[ac showPreviewAnimated:YES];

// 预览网络图片
[ac previewPhotos:arrNetImages index:0 hideToolBar:YES complete:^(NSArray * _Nonnull photos) {
    // your codes
}];


// 直接调用相机
ZLCustomCamera *camera = [[ZLCustomCamera alloc] init];


camera.doneBlock = ^(UIImage *image, NSURL *videoUrl) {
    // 自己需要在这个地方进行图片或者视频的保存
};

[self showDetailViewController:camera sender:nil];

English

可能有翻译不正确的地方,还请英语大佬校准校准

Functions

  • Multiple orientations support: Portrait, Landscape
  • Adaption with iPhone X
  • Supports quick selection in preview list, can set maximum preview numbers (drag selection supported)
  • Select from album directly (slide to select multiple images is supported)
  • Edit images (image filter, cut-out proportion can be customized)
  • Edit videos
  • View and select gif, LivePhoto(iOS 9.0+), video
  • 3D Touch preview image, gif, LivePhoto, video
  • Select image, gif, LivePhoto, video assembly
  • Download photos from iCloud online
  • Control to select video max play time
  • Internationalization (current supported: Simple Chinese, English, Japanese, Traditional Chinese. Can follow system or changed in code. Can specify the other language)
  • Including camera cell in album, rendering captured image in real time
  • Able to have a mask on selected items
  • Preview selected items
  • Preview images/videos saved locally or online (long press to save image to album is supported)
  • Customize radius of images in album
  • Able to sort ascending items or descending items
  • Click to take photos or long press to record videos is supported (just like WeChat)
  • Can customize resource images
  • Able to Export video (Can specify video size or add an image watermark or particle effects. PS: text watermark is not supported currently)

Requirements

iOS 8.0+ Xcode 9.0+

Usage

Step1

  • Manually

    1. Drag PhotoBrowser/ folder into your project
    1. Import Photos.framework and PhotosUI.framework
    1. This repo relays on SDWebImage and GPUImage, so you also need it
    1. Import "ZLPhotoActionSheet.h" at where you wanna use it
  • Cocoapods

    1. Add pod 'ZLPhotoBrowser' to your Podfile
    1. pod setup
    1. pod install or pod update
    1. import <ZLPhotoBrowser/ZLPhotoBrowser.h>
  • Carthage

    • 1.Add github "longitachi/ZLPhotoBrowser" to your Cartfile
    • 2.Run carthage update --platform ios and add the framework to your project.
    • 3.import <ZLPhotoBrowser/ZLPhotoBrowser.h>

Step2

  • add description in info.plist
Localized resources can be mixed YES
Privacy - Photo Library Usage Description
Privacy - Camera Usage Description
Privacy - Microphone Usage Description

问答

  • 关于 @available(9.0, *) 报错 (#90)

该错误会出现在XCode 9.0以下版本,把该代码替换为 [UIDevice currentDevice].systemVersion.floatValue >= 9.0 即可

  • pod 2.4.3 以下版本更新到 pod 2.4.3 以上版本报如下错误 Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ZLThumbnailViewController 0x15bed0d10> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key verLeftSpace.'

由于 pod 2.4.3 版本删除对应xib,所以请执行 command+shift+k clean项目,重启Xcode即可

效果图

  • 多语言国际化效果图 image image image image

  • iPhone X

image

image

  • 3DTouch预览效果图

image

  • 导出视频添加粒子特效(雪花效果)

image

  • 编辑视频预览图

image

  • 编辑图片预览图

image

  • 滤镜

image

  • 自定义相机效果图及介绍

image image

  • 滑动多选预览图

image

  • 拖拽选择预览图

image

  • 混合选择预览图

image

  • 横屏预览图

image

  • 预览网络图片

image

  • 遮罩层

image

  • 预览快速多选效果图

image image

  • 直接进入相册选择相片效果图

image

  • 预览大图及缩放效果图

image image image

  • 拍照

image

  • 相册内混合选择效果图

image

  • 预览已选择照片效果图

image image

  • 原图功能效果图

image

zlphotobrowser's People

Contributors

longitachi avatar kkkgit avatar changsanjiang avatar kinarobin avatar ly541349042 avatar goodheart avatar maligh avatar mouse-lin avatar zhugexiaobo avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.