/** * 错误码 * - 1101001 用户取消 * - 1101002 urls至少包含一张图片地址 * - 1101003 文件不存在 * - 1101004 图片加载失败 * - 1101005 未获取权限 * - 1101006 图片或视频保存失败 * - 1101007 图片裁剪失败 * - 1101008 拍照或录像失败 * - 1101009 图片压缩失败 * - 1101010 其他错误 */ export type MediaErrorCode = 1101001 | 1101002 | 1101003 | 1101004 | 1101005 | 1101006 | 1101007 | 1101008 | 1101009 | 1101010; /** * 图片或视频操作失败的错误回调 */ export interface IMediaError extends IUniError { errCode : MediaErrorCode }; export type ChooseImageSuccess = { /** * 调用API的名称 */ errSubject : string, /** * 描述信息 */ errMsg : string, /** * 图片的本地文件路径列表 * @type string | string [] */ tempFilePaths : Array, /** * 图片的本地文件列表 */ tempFiles : any } export type ChooseImageFail = IMediaError; export type ChooseImageSuccessCallback = (callback : ChooseImageSuccess) => void export type ChooseImageFailCallback = (callback : ChooseImageFail) => void export type ChooseImageCompleteCallback = (callback : any) => void export type ChooseImageCropOptions = { /** * 裁剪的宽度,单位为px,用于计算裁剪宽高比。 */ width : number; /** * 裁剪的高度,单位为px,用于计算裁剪宽高比。 */ height : number; /** * 取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。 * @defaultValue 80 */ quality : (number) | null; /** * 是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注:设置为false时在裁剪编辑界面显示图片的像素值,设置为true时不显示。 * @type boolean */ resize : (boolean) | null; } export type ChooseImageOptions = { /** * 最多可以选择的图片张数,app端不限制,微信小程序最多可支持20个。 * @defaultValue 9 */ count ?: (number) | null, /** * original 原图,compressed 压缩图,默认二者都有 * @type string | string [] * @defaultValue ['original','compressed'] */ sizeType ?: (string[]) | null, /** * album 从相册选图,camera 使用相机,默认二者都有 * @defaultValue ['album','camera'] */ sourceType ?: (string[]) | null, /** * 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。仅H5支持 * @uniPlatform { * "app": { * "android": { * "osVer": "5.0", * "uniVer": "√", * "unixVer": "x" * } * } * } */ extension ?: (string[]) | null, /** * 图像裁剪参数,设置后 sizeType 失效。 */ crop ?: (ChooseImageCropOptions) | null, /** * 成功则返回图片的本地文件路径列表 tempFilePaths */ success ?: (ChooseImageSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (ChooseImageFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (ChooseImageCompleteCallback) | null } export type ChooseImage = (options : ChooseImageOptions) => void export type PreviewImageSuccess = { /** * 调用API的名称 */ errSubject : string, /** * 描述信息 */ errMsg : string } export type LongPressActionsSuccessData = { /** * 接口调用失败的回调函数 */ tapIndex : number, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ index : number }; export type LongPressActionsOptions = { /** * 按钮的文字数组 */ itemList : string[], /** * 按钮的文字颜色,字符串格式,默认为"#000000" */ itemColor : string | null, /** * 接口调用成功的回调函数 */ success : ((result : LongPressActionsSuccessData) => void) | null, /** * 接口调用失败的回调函数 */ fail : ((result : any) => void) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete : ((result : any) => void) | null }; export type PreviewImageFail = IMediaError; export type PreviewImageSuccessCallback = (callback : PreviewImageSuccess) => void export type PreviewImageFailCallback = (callback : PreviewImageFail) => void export type PreviewImageCompleteCallback = ChooseImageCompleteCallback export type PreviewImageOptions = { /** * current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。 * @type string | number */ current ?: any | null, /** * 需要预览的图片链接列表 */ urls : Array, /** * 图片指示器样式 * - default: 底部圆点指示器 * - number: 顶部数字指示器 * - none: 不显示指示器 * @type 'default' | 'number' | 'none' */ indicator ?: string | null, /** * 是否可循环预览 * @type boolean */ loop ?: boolean | null, /** * 长按图片显示操作菜单,如不填默认为保存相册。 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "x" * } * } * } */ longPressActions ?: LongPressActionsOptions | null, /** * 接口调用成功的回调函数 */ success ?: (PreviewImageSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (PreviewImageFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (PreviewImageCompleteCallback) | null }; export type PreviewImage = (options : PreviewImageOptions) => void; export type ClosePreviewImage = (options : ClosePreviewImageOptions) => void; export type ClosePreviewImageSuccess = { /** * 错误信息 */ errMsg : string }; export type ClosePreviewImageFail = IMediaError; export type ClosePreviewImageSuccessCallback = (callback : ClosePreviewImageSuccess) => void export type ClosePreviewImageFailCallback = (callback : ClosePreviewImageFail) => void export type ClosePreviewImageCompleteCallback = ChooseImageCompleteCallback export type ClosePreviewImageOptions = { /** * 接口调用成功的回调函数 */ success ?: (ClosePreviewImageSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (ClosePreviewImageFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (ClosePreviewImageCompleteCallback) | null }; export type GetImageInfo = (options : GetImageInfoOptions) => void; export type GetImageInfoSuccess = { /** * 图片宽度,单位px */ width : number, /** * 图片高度,单位px */ height : number, /** * 返回图片的本地路径 */ path : string, /** * 返回图片的方向 */ orientation : string | null, /** * 返回图片的格式 */ type : string | null }; export type GetImageInfoFail = IMediaError; export type GetImageInfoSuccessCallback = (callback : GetImageInfoSuccess) => void export type GetImageInfoFailCallback = (callback : GetImageInfoFail) => void export type GetImageInfoCompleteCallback = ChooseImageCompleteCallback export type GetImageInfoOptions = { /** * 图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径 */ src : string.ImageURIString, /** * 接口调用成功的回调函数 */ success ?: (GetImageInfoSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (GetImageInfoFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (GetImageInfoCompleteCallback) | null }; export type SaveImageToPhotosAlbum = (options : SaveImageToPhotosAlbumOptions) => void; export type SaveImageToPhotosAlbumSuccess = { /** * 保存到相册的图片路径 */ path : string }; export type SaveImageToPhotosAlbumFail = IMediaError; export type SaveImageToPhotosAlbumSuccessCallback = (callback : SaveImageToPhotosAlbumSuccess) => void export type SaveImageToPhotosAlbumFailCallback = (callback : SaveImageToPhotosAlbumFail) => void export type SaveImageToPhotosAlbumCompleteCallback = ChooseImageCompleteCallback export type SaveImageToPhotosAlbumOptions = { /** * 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径 */ filePath : string.ImageURIString, /** * 接口调用成功的回调函数 */ success ?: (SaveImageToPhotosAlbumSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (SaveImageToPhotosAlbumFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (SaveImageToPhotosAlbumCompleteCallback) | null }; export type CompressImage = (options : CompressImageOptions) => void; export type CompressImageSuccess = { /** * 压缩后图片的临时文件路径 */ tempFilePath : string }; export type CompressImageFail = IMediaError; export type CompressImageSuccessCallback = (callback : CompressImageSuccess) => void export type CompressImageFailCallback = (callback : CompressImageFail) => void export type CompressImageCompleteCallback = ChooseImageCompleteCallback export type CompressImageOptions = { /** * 图片路径,图片的路径,可以是相对路径、临时文件路径、存储文件路径 */ src : string.ImageURIString, /** * 压缩质量,范围0~100,数值越小,质量越低,压缩率越高(仅对jpg有效) */ quality ?: number | null, /** * 旋转度数,范围0~360 */ rotate ?: number | null, /** * 缩放图片的宽度 */ width ?: string | null, /** * 缩放图片的高度 */ height ?: string | null, /** * 压缩后图片的高度,单位为px,若不填写则默认以compressedWidth为准等比缩放 */ compressedHeight ?: number | null, /** * 压缩后图片的宽度,单位为px,若不填写则默认以compressedHeight为准等比缩放。 */ compressedWidth ?: number | null, /** * 接口调用成功的回调函数 */ success ?: (CompressImageSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (CompressImageFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (CompressImageCompleteCallback) | null }; export type ChooseVideoSuccess = { /** * 选定视频的临时文件路径 */ tempFilePath : string, /** * 选定的视频文件,仅H5支持 */ // tempFile: File|null, /** * 选定视频的时间长度 */ duration : number, /** * 选定视频的数据量大小 */ size : number, /** * 返回选定视频的长 */ height : number, /** * 返回选定视频的宽 */ width : number, /** * 包含扩展名的文件名称(仅H5支持) */ // name: string | null }; export type ChooseVideoFail = IMediaError; export type ChooseVideoSuccessCallback = (callback : ChooseVideoSuccess) => void export type ChooseVideoFailCallback = (callback : ChooseVideoFail) => void export type ChooseVideoCompleteCallback = ChooseImageCompleteCallback export type ChooseVideoOptions = { /** * album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera'] */ sourceType ?: (string[]) | null, /** * 是否压缩所选的视频源文件,默认值为true,需要压缩 * @type boolean */ compressed ?: boolean | null, /** * 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒 */ maxDuration ?: number | null, /** * 摄像切换 * - front: 前置摄像头 * - back: 后置摄像头 * @type 'front' | 'back' */ camera ?: string | null, /** * 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。 */ extension ?: (string[]) | null, /** * 接口调用成功,返回视频文件的临时文件路径,详见返回参数说明 */ success ?: (ChooseVideoSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (ChooseVideoFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (ChooseVideoCompleteCallback) | null }; export type ChooseVideo = (options : ChooseVideoOptions) => void; export type GetVideoInfoSuccess = { /** * 画面方向 */ orientation : string | null, /** * 视频格式 */ type : string | null, /** * 视频长度 */ duration : number, /** * 视频大小,单位 kB */ size : number, /** * 视频的长,单位 px */ height : number, /** * 视频的宽,单位 px */ width : number, /** * 视频帧率 */ fps : number | null, /** * 视频码率,单位 kbps */ bitrate : number | null }; export type GetVideoInfoFail = IMediaError; export type GetVideoInfoSuccessCallback = (callback : GetVideoInfoSuccess) => void export type GetVideoInfoFailCallback = (callback : GetVideoInfoFail) => void export type GetVideoInfoCompleteCallback = ChooseImageCompleteCallback export type GetVideoInfoOptions = { /** * 视频文件路径,可以是临时文件路径也可以是永久文件路径 */ src : string.VideoURIString, /** * 接口调用成功的回调函数 */ success ?: (GetVideoInfoSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (GetVideoInfoFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (GetVideoInfoCompleteCallback) | null }; export type GetVideoInfo = (options : GetVideoInfoOptions) => void; export type SaveVideoToPhotosAlbumSuccess = {}; export type SaveVideoToPhotosAlbumFail = IMediaError; export type SaveVideoToPhotosAlbumSuccessCallback = (callback : SaveVideoToPhotosAlbumSuccess) => void export type SaveVideoToPhotosAlbumFailCallback = (callback : SaveVideoToPhotosAlbumFail) => void export type SaveVideoToPhotosAlbumCompleteCallback = ChooseImageCompleteCallback export type SaveVideoToPhotosAlbumOptions = { /** * 视频文件路径,可以是临时文件路径也可以是永久文件路径 */ filePath : string.VideoURIString, /** * 接口调用成功的回调函数 */ success ?: (SaveVideoToPhotosAlbumSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (SaveVideoToPhotosAlbumFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (SaveVideoToPhotosAlbumCompleteCallback) | null }; export type SaveVideoToPhotosAlbum = (options : SaveVideoToPhotosAlbumOptions) => void; export type CompressVideoSuccess = { /** * 压缩后的临时文件地址 */ tempFilePath : string, /** * 压缩后的大小,单位 kB */ size : number }; export type CompressVideoFail = IMediaError; export type CompressVideoSuccessCallback = (callback : CompressVideoSuccess) => void export type CompressVideoFailCallback = (callback : CompressVideoFail) => void export type CompressVideoCompleteCallback = ChooseImageCompleteCallback export type CompressVideoOptions = { /** * 视频文件路径,可以是临时文件路径也可以是永久文件路径 */ src : string.VideoURIString, /** * 压缩质量 * - low: 低 * - medium: 中 * - high: 高 * @type 'low' | 'medium' | 'high' */ quality ?: string | null, /** * 码率,单位 kbps */ bitrate ?: number | null, /** * 帧率 */ fps ?: number | null, /** * 相对于原视频的分辨率比例,取值范围(0, 1] */ resolution ?: number | null, /** * 接口调用成功的回调函数 */ success ?: (CompressVideoSuccessCallback) | null, /** * 接口调用失败的回调函数 */ fail ?: (CompressVideoFailCallback) | null, /** * 接口调用结束的回调函数(调用成功、失败都会执行) */ complete ?: (CompressVideoCompleteCallback) | null }; export type CompressVideo = (options : CompressVideoOptions) => void; export interface Uni { /** * 从本地相册选择图片或使用相机拍照 * @description 从本地相册选择图片或使用相机拍照 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * }, * "web": { * "uniVer": "√", * "unixVer": "4.0" * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.chooseImage({ * count:3, * success(e){ * console.log(JSON.stringify(e)) * } * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/image?id=chooseimage * @autotest { generated:false } */ chooseImage(options : ChooseImageOptions) : void; /** * 预览图片 * @description 预览图片 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * }, * "web": { * "uniVer": "√", * "unixVer": "4.0" * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.previewImage({ * urls:['/static/a.jpg','/static/b.jpg'], * success(e){ * console.log(JSON.stringify(e)) * } * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/image?id=previewimage * @autotest { generated:false } */ previewImage(options : PreviewImageOptions) : void; /** * 关闭图片预览 * @description 关闭图片预览 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.closePreviewImage({ * success(e){ * console.log(JSON.stringify(e)) * } * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/image?id=closepreviewimage * @autotest { generated:false } */ closePreviewImage(options : ClosePreviewImageOptions) : void; /** * 获取图片信息 * @description 获取图片信息 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.getImageInfo({ * src:'/static/a.jpg', * success(e){ * console.log(JSON.stringify(e)) * }, * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/image?id=getimageinfo * @autotest { generated:false, case:[ { input:[{"src":"/static/a.jpg"}] } ] } */ getImageInfo(options : GetImageInfoOptions) : void; /** * 保存图片到系统相册 * @description 保存图片到系统相册 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.saveImageToPhotosAlbum({ * filePath:'/static/a.jpg', * success(e){ * console.log(JSON.stringify(e)) * }, * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/image?id=saveimagetophotosalbum * @autotest { generated:false, case:[ { input:[{"filePath":"/static/a.jpg"}] } ] } */ saveImageToPhotosAlbum(options : SaveImageToPhotosAlbumOptions) : void; /** * 压缩图片 * @description 压缩图片 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.compressImage({ * src:'/static/a.jpg', * quality:80, * success(e){ * console.log(JSON.stringify(e)) * }, * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/image?id=compressimage * @autotest { generated:false, case:[ { input:[{"src":"/static/d.jpg"},{"rotate","30"}] } ] } */ compressImage(options : CompressImageOptions) : void; /** * 拍摄视频或从手机相册中选视频,返回视频的临时文件路径。 * @description 拍摄视频或从手机相册中选视频,返回视频的临时文件路径。 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.chooseVideo({ * success(e){ * console.log(JSON.stringify(e)) * }, * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/video?id=choosevideo * */ chooseVideo(options : ChooseVideoOptions) : void; /** * 获取视频详细信息 * @description 获取视频详细信息 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.GetVideoInfo({ * src:"/static/a.mp4", * success(e){ * console.log(JSON.stringify(e)) * }, * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/video?id=getvideoinfo * */ getVideoInfo(options : GetVideoInfoOptions) : void; /** * 保存视频到系统相册 * @description 保存视频到系统相册 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.saveVideoToPhotosAlbum({ * filePath:"/static/a.mp4", * success(e){ * console.log(JSON.stringify(e)) * }, * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/video?id=savevideotophotosalbum * */ saveVideoToPhotosAlbum(options : SaveVideoToPhotosAlbumOptions) : void; /** * 压缩视频 * @description 压缩视频 * @uniPlatform { * "app": { * "android": { * "osVer": "4.4", * "uniVer": "√", * "unixVer": "3.9+" * } * } * } * @uniVueVersion 2,3 * @example * ```typescript * uni.compressVideo({ * src:"/static/a.mp4", * quality:"low", * success(e){ * console.log(JSON.stringify(e)) * }, * }) * ``` * @tutorial http://uniapp.dcloud.io/api/media/video?id=compressvideo * */ compressVideo(options : CompressVideoOptions) : void; }