UNPKG

compression-img

Version:

本地压缩图片

90 lines 2.14 kB
function compressionZT(fs,tinify,key,oldImages,newImages,typeFile,size){ tinify.key = key; tinify.validate(function(err) { if (err) throw err; // Validation of API key failed. let compressionsThisMonth = tinify.compressionCount; console.log('本月你已压缩图片'+compressionsThisMonth+'张,免费压缩500张,请注意压缩次数'); }) var path = require('path'); //判断目标目录是否存在 如果存在就读取文件夹,不存在则创建; function makdir(){ return new Promise((res,rej)=>{ fs.stat(newImages,function(err,states){ if(err){ fs.mkdir(newImages,function(err){ if(err){ console.log(err) res(); } console.log('创建文件目录成功!!!!!'); res(); }) } res(); }) }) } //读取文件判断 function async(data){ let list = []; return new Promise((res,rej)=>{ data.map(v=>{ let filesType = fs.statSync(oldImages+'/'+v); if(filesType.isFile()){ list.push(v) } }) res(list) }) } //读取文件列表 function readdirs(){ return new Promise((res,rej)=>{ fs.readdir(oldImages,function(err,data){ if(err){ if(err.errno=='-4058'){ console.log('源文件不存在'); }else{ console.log(err); } return } res(data) }) }) } //过滤文件列表 function fileSize(res){ let lpk = []; return new Promise((rel,rek)=>{ res.map(v=>{ var extname = path.extname(v) let fileTypes = typeFile.includes(extname); if(fileTypes){ let files = fs.statSync(oldImages+'/'+ v); if(files.size>(+size*1024)){ lpk.push(v); } } }) rel(lpk); }) } //开始压缩 function yasuo(lll){ lll.map(v=>{ console.log('图片压缩中,'+v); tinify.fromFile(oldImages+'/'+v).toFile(newImages+'/'+v); }) } async function callBack(){ var mk = await makdir(); var kk = await readdirs(); var list = await readdirs(); var imgaes = await fileSize(list) yasuo(imgaes); } callBack(); } module.exports = compressionZT;