項目開發常用方法,記錄一下,以備參考:
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 "";
}
}