项目开发常用方法,记录一下,以备参考:
const fs = require("fs");
const images = require("images");
/**
* 图片压缩
* @param {*} srcPath 原图片路径
* @param {*} outPath 新图片保存路径
* @param {*} width 新图片像素宽度
* @param {*} quality 新图片质量系数
*/
function compressImage(srcPath, outPath, width, quality) {
images(srcPath)
.size(width || 1024)
.save(outPath, {
quality: quality || 50
});
},
/**
* 文件转base64字符串
* @param {*} filePath
*/
function fileToBase64(filePath) {
try {
return images(filePath).size(width || 1024).encode('jpg', { quality: quality || 50 }).toString("base64");
} catch (error) {
return "";
}
}
/**
* base64字符串转文件
* @param {*} base64Str
* @param {*} filePath
*/
function Base64ToFile(base64Str, filePath) {
var dataBuffer = new Buffer(base64Str, 'base64');
fs.writeFile(filePath, dataBuffer, function (err) {
if (err) {
console.log("base64 to file error")
} else {
console.log("base64 to file success")
}
});
}
/**
* 遍历文件夹压缩文件
* @param {*} root
* @param {*} width
* @param {*} quality
* @param {*} task
*/
function compressFile (root, width, quality, task) {
try {
var pa = fs.readdirSync(root);
pa.forEach(function (ele, index) {
var name = root + "\\" + ele;
var info = fs.statSync(name)
if (info.isDirectory()) {
tools.compressFile(name, width, quality, task);
} else {
var fn = ele.split('.');
var nm = root + "\\" + fn[0] + '_x.jpg';
task.push(function (callback) {
var buff = images(name).size(width || 1024).encode('jpg', {
quality: quality || 50
});
fs.writeFile(nm, buff, function (err) {
if (err) {
console.log("base64 to file error")
} else {
console.log("base64 to file success")
}
});
});
}
})
} catch (error) {
return "";
}
}