博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Node】简单快捷的图片压缩脚本
阅读量:6504 次
发布时间:2019-06-24

本文共 1694 字,大约阅读时间需要 5 分钟。

原文地址:

在写个人博客时,经常需要使用到图片,为了优化文章的阅读体验,需要对图片进行压缩,现在有很多好用的图片压缩网站,比如:

但是每次压缩都手动的去上传下载,还挺麻烦的,于是想着写一个node脚本来做图片压缩工作

本文介绍的方法真的很简单快捷,使用的是 提供的Node API,文档:

在使用之前,需要去申请一个API Key,入口:,注意一个API Key一个月只能免费压缩500个图片,不过我觉得还是够用的

具体使用方式可以参考官方文档,下面介绍如何批量的对图片进行压缩,直接上代码:

tinify.js

const tinify = require('tinify');const apiKey = require('./api_key');const fs = require('fs');const path = require('path');// API Keytinify.key = apiKey;// 执行图片压缩任务,返回promise对象const task = file => {    const source = tinify.fromFile(file.fromFile);    source.toFile(file.toFile);    return source._url;}// 通过输入文件夹和输出文件夹,返回一个数组const fromDir = (inDir, outDir, _files = []) => {    const files = fs.readdirSync(inDir);    for (let file of files) {        const filePath = `${inDir}/${file}`;        const toFilePath = `${outDir}/${file}`;        if (fs.statSync(filePath).isDirectory()) {            fromDir(filePath, toFilePath, _files)        } else {            try {                fs.accessSync(toFilePath);            } catch (err) {                _files.push({                    fromFile: filePath,                    toFile: toFilePath,                });            }        }    }    return _files;}const rootDir = fs.realpathSync(process.cwd());const screenshotDir = path.resolve(rootDir, './screenshotin');const screenshotOutDir = path.resolve(rootDir, './screenshot');const files = fromDir(screenshotDir, screenshotOutDir);// 遍历数组,顺序执行各任务if (files.length === 0) {    return;}let current = task(files[0]);for (let i = 1; i < files.length; i++) {    current = current.then(task(files[i]));}复制代码

执行 node tinify.js,即可批量压缩 ./screenshotin 文件夹下的图片啦

写在最后

这个脚本是用于压缩我的博客中的图片,基本能满足我的个人需求,其他情况并未考虑,希望能对有需要的小伙伴有帮助~~~

喜欢我的文章小伙伴可以去 点star ⭐️

转载地址:http://vyqyo.baihongyu.com/

你可能感兴趣的文章
杂七杂八(1)——如何查看本机的.NET Framework版本
查看>>
数学 --- 高斯消元 POJ 1830
查看>>
ListView嵌套webView 事件冲突解决
查看>>
由socket的accept说开去
查看>>
Java中的匿名内部类
查看>>
Microsoft Dynamics CRM 2013 Reporting Extensions 正式安装
查看>>
Redis 管理命令
查看>>
一种测试方向的探讨-基于模型测试调研引发的思考 - 4
查看>>
EL表达式详解
查看>>
SpringMVC3.1.1+Spring3.1.1+Hibernate4+Velocity+EasyUI+ZTree实现RBAC基于角色的访问控制(二)...
查看>>
Validation Application Block动手实验室
查看>>
SSRS 2012 交互式报表 -- 单层文档结构图
查看>>
企业级监控软件zabbix搭建部署之zabbix server的安装(一)
查看>>
check_nginx pnp4nagios 模版
查看>>
Windows Server 2008 R2之六活动目录域服务的卸载
查看>>
私有网盘nextcloud 12的使用介绍
查看>>
ASP.NET 主题(Themes)FAQ
查看>>
linux命令实践-du
查看>>
什么是双核处理器?双核的概念是什么?
查看>>
文档转换拾遗
查看>>