tinypng实现本地自动压缩
# tinypng运用nodejs api实现命令行自动压缩 ⚡️
# 背景
众所周知,tinypng通过有损压缩,但这种压缩只是针对图片的颜色进行处理,所以压缩后并看不出来有什么区别。但我们压缩图片,一般是通过网页压缩,步骤繁琐,所以在想有没有好的方法,能通过脚本命令,自动压缩处理图片。幸好,tinypng提供nodejs api 可以供开发者调用,自动压缩处理图片。
# 先上图 🎉
因为压缩有次数限制,所以这里加入了次数的提示,方便知道还有多少次可以压缩,另外,同一张图片之前经过压缩,如果没有经过压缩,则不会计入计算次数。
# tinypng
- 介绍-没啥好说的,就是好用 ⚡️
tinypng 官网:https://tinify.cn/
# show core code
// tiny.js
let fileSize = fs.statSync(filePathAll).size;
tinify.fromBuffer(sourceData).toBuffer((err, resultData) => {
if (err) {
console.log(chalk.red(`${file} 压缩失败`));
reject(err);
}
//将压缩后的文件保存覆盖
fs.writeFile(filePathAll, resultData, (err) => {
let compressFileSize = fs.statSync(filePathAll).size;
console.log(
chalk.green(
`${file} ${(fileSize / 1024).toFixed(2)}kb 压缩成功 ${(
compressFileSize / 1024
).toFixed(2)}kb ${(
((compressFileSize - fileSize) * 100) /
fileSize
).toFixed(1)}%`
)
);
resolve();
});
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 小结
通过npm run tiny
命令,便可以实现自动化压缩png/jpg图片,提高研发效率,使得项目在打包构建后体积可以大幅缩减,但又不会影响图片质量,以及查看。