zip常见问题我要提意见
Zip模块管理文件压缩和解压,通过plus.zip可获取压缩管理对象。
方法:
- compress: 压缩生成Zip文件
- decompress: 解压缩Zip文件
- compressImage: 图片压缩转换
- compressVideo: 视频压缩
对象:
- CompressImageOptions: JSON对象,配置图片压缩的参数
- CompressVideoOptions: JSON对象,配置视频压缩的参数
- ClipImageOptions: JSON对象,图片裁剪区域的参数
回调方法:
- CompressImageSuccessCallback: 图片压缩转换操作成功回调接口
- CompressVideoSuccessCallback: 视频压缩成功回调接口
- ZipSuccessCallback: 操作成功回调函数接口,在解压Zip文件或压缩成Zip文件成功时调用
- ZipErrorCallback: 操作错误回调函数接口,在解压Zip文件或压缩成Zip文件失败时调用
权限:
5+功能模块(permissions)
{
// ...
"permissions":{
// ...
"Zip": {
"description": "压缩与解压"
}
}
}
compress
压缩生成Zip文件
void plus.zip.compress(src, zipfile, successCB, errorCB);
参数:
- src: ( String ) 必选 要压缩的源文件路径,支持文件路径或目录
- zipfile: ( String ) 必选 压缩后保存的Zip文件路径
- successCB: ( ZipSuccessCallback ) 可选 压缩Zip文件操作成功回调,在压缩操作成功时调用
- errorCB: ( ZipErrorCallback ) 可选 压缩Zip文件操作失败回调,在压缩操作失败时调用
返回值:
void : 无
示例:
//压缩
function zipCompress(){
var zipfile = "_doc/text11.zip";
var targetPath = '_doc/dir/';
plus.zip.compress(targetPath,zipfile,
function() {
alert("Compress success!");
},function(error) {
alert("Compress error!");
});
}
decompress
解压缩Zip文件
void plus.zip.decompress( zipfile, target, successCB, errorCB);
参数:
- zipfile: ( String ) 必选 需解压Zip文件路径
- target: ( String ) 必选 解压Zip文件的目标路径,必须是路径
- successCB: ( ZipSuccessCallback ) 可选 解压Zip文件操作成功回调,在解压操作成功时调用。
- errorCB: ( ZipErrorCallback ) 可选 解压Zip文件操作失败回调,在解压操作失败时调用。
返回值:
void : 无
示例:
//解压缩
function zipDecompress() {
var zipfile = "_doc/text.zip";
var targetPath = '_doc/dir/';
plus.zip.decompress(zipfile, targetPath,
function() {
alert("Decompress success!");
},function(error) {
alert("Compress error!");
});
}
compressImage
图片压缩转换
void plus.zip.compressImage(options, successCB, errorCB);
说明:
可用于图片的质量压缩、大小缩放、方向旋转、区域裁剪、格式转换等。
参数:
- options: ( CompressImageOptions ) 必选 图片压缩转换的参数
- successCB: ( CompressImageSuccessCallback ) 可选 图片压缩转换操作成功回调,操作成功时调用。
- errorCB: ( ZipErrorCallback ) 可选 图片压缩转换操作失败回调,操作失败时调用。
返回值:
void : 无
示例:
//压缩图片
function compressImage(){
plus.zip.compressImage({
src:"_www/a.jpg",
dst:"_doc/a.jpg",
quality:20
},
function() {
alert("Compress success!");
},function(error) {
alert("Compress error!");
});
}
//缩放图片
function zoomImage(){
plus.zip.compressImage({
src:"_www/a.jpg",
dst:"_doc/a.jpg",
width:"50%" // 缩小到原来的一半
},
function() {
alert("Compress success!");
},function(error) {
alert("Compress error!");
});
}
//旋转图片
function rotateImage(){
plus.zip.compressImage({
src:"_www/a.jpg",
dst:"_doc/a.jpg",
rotate:90 // 旋转90度
},
function() {
alert("Compress success!");
},function(error) {
alert("Compress error!");
});
}
//裁剪图片
function clipImage(){
plus.zip.compressImage({
src:"_www/a.jpg",
dst:"_doc/a.jpg",
clip:{top:"25%",left:"25%",width:"50%",height:"50%"} // 裁剪图片中心区域
},
function() {
alert("Compress success!");
},function(error) {
alert("Compress error!");
});
}
//格式转换
function convertImage(){
plus.zip.compressImage({
src:"_www/a.jpg",
dst:"_doc/a.png",
format:"png" // 将jpg转换成png格式
},
function() {
alert("Compress success!");
},function(error) {
alert("Compress error!");
});
}
compressVideo
视频压缩
void plus.zip.compressVideo(options, successCB, errorCB);
说明:
支持设置视频的压缩质量、码率、帧率、分辨率大小等,压缩后视频格式为mp4。
压缩成功后的视频默认保存到应用临时目录(应用退出时清除)。
注意:HBuilderX3.1.5+版本新增支持。
参数:
- options: ( CompressVideoOptions ) 必选 视频压缩的参数
- successCB: ( CompressVideoSuccessCallback ) 可选 视频压缩操作成功回调,操作成功时调用。
- errorCB: ( ZipErrorCallback ) 可选 视频压缩操作失败回调,操作失败时调用。
返回值:
void : 无
示例:
// 压缩视频
function compressVideo(){
plus.nativeUI.showWaiting();
plus.zip.compressVideo({
src: '_www/video/bee.mp4',
quality: 'medium'
},function(e){
plus.nativeUI.closeWaiting();
console.log("压缩视频成功:"+JSON.stringify(e));
},function(e){
plus.nativeUI.closeWaiting();
console.log("压缩视频失败:"+JSON.stringify(e));
});
}
CompressImageOptions
JSON对象,配置图片压缩的参数
说明:
设置quality属性则表示操作后保存图片的质量。 设置width/height属性则表示对图片进行缩放操作,设置rotate属性这表示对图片进行转换操作,设置clip属性则表示对图片进行裁剪操作,可同时设置以上操作。
属性:
- src: (String 类型 )压缩视频文件的路径 支持以下图片路径: 相对路径 – 相对于当前页面的host位置,如”a.jpg”,注意当前页面为网络地址则不支持; 绝对路径 – 系统绝对路径,如Android平台”/storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/www/a.jpg”,iOS平台”/var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/www/a.png”; 相对路径URL(RelativeURL) – 以”_”开头的相对路径,如”_www/a.jpg”、”_doc/b.jpg”、”_documents/c.jpg”、”_downloads/d.jpg”; 本地路径URL – 以“file://”开头,后面跟随系统绝对路径。
平台支持
- Android – 4.4+ (支持) : 支持jpg/jpeg、png等格式。
- iOS – 8.0+ (支持) : 支持jpg/jpeg、png、tif/tiff、bmp、ico、cur、xbm等格式。
- dst: (String 类型 )压缩转换目标图片的路径 支持以下图片路径: 绝对路径 – 系统绝对路径,如Android平台”/storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/a.jpg”,iOS平台”/var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/doc/a.png”; 相对路径URL(RelativeURL) – 以”_”开头的相对路径,如”_doc/b.jpg”、”_documents/c.jpg”、”_downloads/d.jpg”,注意不支持”_www”开头的路径; 本地路径URL – 以“file://”开头,后面跟随系统绝对路径。 注意:如果设置的路径无权限访问,则返回失败。
- overwrite: (Boolean 类型 )覆盖生成新文件 仅在dst制定的路径文件存在时有效: true表示覆盖存在的文件; false表示不覆盖,如果文件存在,则返回失败。 默认值为false。
- format: (String 类型 )压缩转换后的图片格式 支持”jpg”、”png”,默认值为jpg。
- quality: (Number 类型 )压缩图片的质量 取值范围为1-100,1表示使用最低的图片质量(转换后的图片文件最小)、100表示使用最高的图片质量(转换后的图片文件最大); 默认值为50。
注意:仅对jpg格式图片有效。 - width: (String 类型 )缩放图片的宽度 支持像素值(如”100px”)、百分比(如”50%”)、自动计算(如”auto”,即根据height与源图高的缩放比例计算,若未设置height则使用源图高度); 默认值为”auto”。 注意:若设置了width属性值不合法(如”0px”),则不对图片进行缩放操作。
- height: (String 类型 )缩放图片的高度 支持像素值(如”100px”)、百分比(如”50%”)、自动计算(如”auto”,即根据width与源图宽的缩放比例计算,若未设置width则使用源图高度); 默认值为”auto”。 注意:若设置了height属性值不合法(如”0px”),则不对图片进行缩放操作。
- rotate: (Number 类型 )旋转图片的角度 支持值:90-表示旋转90度;180-表示旋转180度;270-表示旋转270度。 注意:若设置rotate属性值不合法,则不对图片进行旋转操作。
- clip: (ClipImageOptions 类型 )裁剪图片的区域 值参考ClipImageOptions定义,若设置clip属性值不合法,则不对图片进行裁剪操作。
CompressVideoOptions
JSON对象,配置视频压缩的参数
说明:
设置quality属性则表示压缩视频质量。需要更精确的压缩参数控制时,可指定bitrate(码率)、fps(帧率)、及resolution(相对于原视频分辨率比例)。 传入quality属性值后,bitrate、fps、resolution属性值将被忽略。
属性:
- src: (String 类型 )压缩视频文件的路径 支持以下路径: 相对路径 – 相对于当前页面的host位置,如”a.jpg”,注意当前页面为网络地址则不支持; 绝对路径 – 系统绝对路径,如Android平台”/storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/www/a.mp4″,iOS平台”/var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/www/a.mp4″; 相对路径URL(RelativeURL) – 以”_”开头的相对路径,如”_www/a.mp4″、”_doc/b.mp4″、”_documents/c.mp4″、”_downloads/d.mp4″; 本地路径URL – 以“file://”开头,后面跟随系统绝对路径。
平台支持
- Android – 4.4+ (支持) : 支持mp4等格式。
- iOS – 8.0+ (支持) : 支持mov、mp4等格式。
- filename: (String 类型 )压缩后视频文件保存的路径 保存文件路径仅支持以”_downloads/”、”_doc/”、”_documents/”开头的字符串。 文件路径以文件后缀名结尾(如”_doc/download/video.mp4″)表明指定保存文件目录及名称,以“/”结尾则认为指定保存文件的目录(此时程序自动生成文件名)。 如果指定的文件已经存在,则自动在文件名后面加”(i)”,其中i为数字,如果文件名称后面已经是此格式,则数字i递增,如”video(1).mp4″。
默认保存到应用临时目录(应用退出时清除),并自动生成文件名称。
注意: HBuilderX3.1.10+版本支持。 - quality: (String 类型 )压缩质量 可取值:
- low – 低视频质量压缩,文件小、视频不够清晰
- medium – 中等视频质量压缩,平衡文件大小Hello uni-app视频清晰度
- high – 高视频质量压缩,文件大、视频较清晰
默认值为high。
- bitrate: (Number 类型 )码率 单位为kbps。
注意:Android暂不支持。 - fps: (Number 类型 )帧率 注意:Android暂不支持。
- resolution: (Number 类型 )视频分辨率 相对于原视频的分辨率比例,取值范围大于0、小于等于1。 默认值为1。
注意:Android暂不支持。
ClipImageOptions
JSON对象,图片裁剪区域的参数
属性:
- top: (String 类型 )图片裁剪区域与原图片上边界的偏移距离 支持像素值(如”10px”)、百分比(如”10%”);默认值为”0px”。 注意:如果top值超出原图片高度,则图片裁剪失败。
- left: (Stirng 类型 )图片裁剪区域与原图片左边界的偏移距离 支持像素值(如”10px”)、百分比(如”10%”);默认值为”0px”。 注意:如果left值超出原图片宽度,则图片裁剪失败。
- width: (String 类型 )图片裁剪区域的宽度 支持像素值(如”100px”)、百分比(如”50%”)、自动计算(如”auto”,即从left位置到图片右边界的宽度);默认值为”auto”。 注意:如果left值加width值超出原图片宽度,则使用”auto”值进行裁剪。
- height: (String 类型 )图片裁剪区域的高度 支持像素值(如”100px”)、百分比(如”50%”)、自动计算(如”auto”,即从top位置到图片下边界的高度);默认值为”auto”。 注意:如果top值加height值超出原图片高度,则使用”auto”值进行裁剪。
CompressImageSuccessCallback
图片压缩转换操作成功回调接口
void onSuccess( Event event ){
// Code here
var target = event.target; // 压缩转换后的图片url路径,以"file://"开头
var size = event.size; // 压缩转换后图片的大小,单位为字节(Byte)
var width = event.width; // 压缩转换后图片的实际宽度,单位为px
var height = event.height; // 压缩转换后图片的实际高度,单位为px
}
参数:
- event: ( Event ) 可选 图片压缩转换后的图片信息 可通过event.target(String类型)获取压缩转换后的图片url路径,以”file://”开头,可直接在html页面中通过src属性引用,如Android平台”file:///storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/a.jpg”,iOS平台”file:///var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/doc/a.png”; 可通过event.size(Number类型)获取压缩转换后图片的大小,单位为字节(Byte); 可通过event.width(Number类型)获取压缩转换后的图片的实际宽度,单位为px; 可通过event.height(Number类型)获取压缩转换后的图片的实际高度,单位为px。
返回值:
void : 无
CompressVideoSuccessCallback
视频压缩成功回调接口
void onSuccess( Event event ){
// Code here
var target = event.tempFilePath; // 压缩后视频文件路径
var size = event.size; // 压缩视频的大小,单位为字节(Byte)
}
参数:
- event: ( Event ) 可选 视频压缩后的文件信息 回调参数为json类型,包含以下参数:
- tempFilePath – 压缩后视频文件路径,应用临时目录,退出时清除
- size – 压缩后视频文件大小,单位为字节(Byte)
返回值:
void : 无
ZipSuccessCallback
操作成功回调函数接口,在解压Zip文件或压缩成Zip文件成功时调用
void onSuccess(){
// Code here
}
参数:
无
返回值:
void : 无
ZipErrorCallback
操作错误回调函数接口,在解压Zip文件或压缩成Zip文件失败时调用
void onError(error){
// Handle the error
var code = error.code; // 错误编码
var message = error.message; // 错误描述信息
}
参数:
- error: ( Exception ) 可选 Zip操作的错误信息 可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。
返回值:
void : 无