react-native-syan-image-picker
Version:
React-Native 多图片选择 支持裁剪 压缩
120 lines (106 loc) • 5.15 kB
TypeScript
export interface ImagePickerOption {
imageCount: number, // 最大选择图片数目,默认6
isRecordSelected: boolean, // 是否已选图片
isCamera: boolean, // 是否允许用户在内部拍照,默认true
isCrop: boolean, // 是否允许裁剪,默认false, imageCount 为1才生效
CropW: number, // 裁剪宽度,默认屏幕宽度60%
CropH: number, // 裁剪高度,默认屏幕宽度60%
isGif: boolean, // 是否允许选择GIF,默认false,暂无回调GIF数据
showCropCircle: boolean, // 是否显示圆形裁剪区域,默认false
circleCropRadius: number, // 圆形裁剪半径,默认屏幕宽度一半
showCropFrame: boolean, // 是否显示裁剪区域,默认true
showCropGrid: boolean, // 是否隐藏裁剪区域网格,默认false
freeStyleCropEnabled: boolean, // 裁剪框是否可拖拽
rotateEnabled: boolean, // 裁剪是否可旋转图片
scaleEnabled: boolean, // 裁剪是否可放大缩小图片
compress: boolean,
compressFocusAlpha:boolean, //压缩png保留通明度
minimumCompressSize: number, // 小于100kb的图片不压缩
quality: number, // 压缩质量
enableBase64: boolean, // 是否返回base64编码,默认不返回
allowPickingOriginalPhoto: boolean,
allowPickingMultipleVideo: boolean, // 可以多选视频/gif/图片,和照片共享最大可选张数maxImagesCount的限制
videoMaximumDuration: number, // 视频最大拍摄时间,默认是10分钟,单位是秒
isWeChatStyle: boolean, // 是否是微信风格选择界面 Android Only
sortAscendingByModificationDate: boolean // 对照片排序,按修改时间升序,默认是YES。如果设置为NO,最新的照片会显示在最前面,内部的拍照按钮会排在第一个
videoCount: number // 视频个数
MaxSecond: number // 选择视频最大时长,默认是180秒
MinSecond: number // 选择视频最小时长,默认是1秒
showSelectedIndex: boolean, // 是否显示序号, 默认不显示
}
interface SelectedPhoto {
width: number, //图片宽度
height: number, //图片高度
uri: string, //图片路径
original_uri:string, //图片原始路径,仅 Android
type: string, //文件类型,仅 Android,当前只返回 image
size:number, //图片大小,单位为字节 b
base64:string //图片的 base64 编码,如果 enableBase64 设置 false,则不返回该属性
}
/**
* 以Callback形式调用
* 1、相册参数暂时只支持默认参数中罗列的属性;
* 2、回调形式:showImagePicker(options, (err, selectedPhotos) => {})
* 1)选择图片成功,err为null,selectedPhotos为选中的图片数组
* 2)取消时,err返回"取消",selectedPhotos将为undefined
* 按需判断各参数值,确保调用正常,示例使用方式:
* showImagePicker(options, (err, selectedPhotos) => {
* if (err) {
* // 取消选择
* return;
* }
* // 选择成功
* })
*
* @param {Object} options 相册参数
* @param {Function} callback 成功,或失败回调
*/
export function showImagePicker (options:Partial<ImagePickerOption>,callback:(err:null|string,photos:Array<SelectedPhoto>)=>void): void;
/**
* 以Promise形式调用
* 1、相册参数暂时只支持默认参数中罗列的属性;
* 2、使用方式
* 1)async/await
* handleSelectPhoto = async () => {
* try {
* const photos = await SYImagePicker.asyncShowImagePicker(options);
* // 选择成功
* } catch (err) {
* // 取消选择,err.message为"取消"
* }
* }
* 2)promise.then形式
* handleSelectPhoto = () => {
* SYImagePicker.asyncShowImagePicker(options)
* .then(photos => {
* // 选择成功
* })
* .catch(err => {
* // 取消选择,err.message为"取消"
* })
* }
* @param {Object} options 相册参数
* @return {Promise} 返回一个Promise对象
*/
export function asyncShowImagePicker (options:Partial<ImagePickerOption>): Promise<Array<SelectedPhoto>>;
/**
* 打开相机支持裁剪参数
* @param options
* @param callback
*/
export function openCamera (options:Partial<ImagePickerOption>,callback:(err:null|string,photos:Array<SelectedPhoto>)=>void): void;
export function asyncOpenCamera (options:Partial<ImagePickerOption>): Promise<Array<SelectedPhoto>>;
/**
* 清除缓存
*/
export function deleteCache (): void;
/**
* 移除选中的图片
* @param {Number} index 要移除的图片下标
*/
export function removePhotoAtIndex (index:number): void;
/**
* 移除所有选中图片
*/
export function removeAllPhoto (): void;
export function openVideoPicker (options:Partial<ImagePickerOption>,callback:(err:null|string,photos:Array<SelectedPhoto>)=>void): void;