UNPKG

@react-native-ohos/react-native-syan-image-picker

Version:

React-Native 多图片选择 支持裁剪 压缩

65 lines (52 loc) 3.53 kB
import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport'; import { TurboModuleRegistry} from 'react-native'; 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,则不返回该属性 } export interface Spec extends TurboModule { showImagePicker: (options: ImagePickerOption, callback: (err: null | string, photos: Array<SelectedPhoto>) => void) => void; asyncShowImagePicker: (options: ImagePickerOption) => Promise<Array<SelectedPhoto>>; openCamera: (options: ImagePickerOption, callback: (err: null | string, photos: Array<SelectedPhoto>) => void) => void; asyncOpenCamera: (options: ImagePickerOption) => Promise<Array<SelectedPhoto>>; deleteCache: () => void; removePhotoAtIndex: (index: number) => void; removeAllPhoto: () => void; openVideoPicker: (options: ImagePickerOption, callback: (err: null | string, photos: Array<SelectedPhoto>) => void) => void; } export default TurboModuleRegistry.getEnforcing<Spec>("RNSyanImagePicker");