compression-img
Version:
本地压缩图片
90 lines • 2.14 kB
JavaScript
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;