Iwen's blog Iwen's blog
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
复盘
关于

Iwen

不摸鱼的哥哥
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
复盘
关于
  • JavaScript文章

  • Vue文章

  • 学习笔记

  • Vue-iView疑难杂症

  • 微前端

  • 原创经验

    • 微服务集群下的前端接口层优化适配
    • 实现右键菜单
    • sassdoc了解及实践
    • vue-router报错Uncaught (in promise)及解决方法
    • nodemailer实现构建打包自动推送邮箱
    • tinypng实现本地自动压缩
    • 前端
    • 原创经验
    Mr.w
    2021-01-18

    tinypng实现本地自动压缩

    # tinypng运用nodejs api实现命令行自动压缩 ⚡️

    # 背景

    众所周知,tinypng通过有损压缩,但这种压缩只是针对图片的颜色进行处理,所以压缩后并看不出来有什么区别。但我们压缩图片,一般是通过网页压缩,步骤繁琐,所以在想有没有好的方法,能通过脚本命令,自动压缩处理图片。幸好,tinypng提供nodejs api 可以供开发者调用,自动压缩处理图片。

    # 先上图 🎉

    20210118172006

    因为压缩有次数限制,所以这里加入了次数的提示,方便知道还有多少次可以压缩,另外,同一张图片之前经过压缩,如果没有经过压缩,则不会计入计算次数。

    20210118172946

    # tinypng

    • 介绍-没啥好说的,就是好用 ⚡️

    tinypng 官网:https://tinify.cn/

    20210118174212

    • tinypng nodejs api (opens new window)

    # 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

    # 小结

    通过npm run tiny命令,便可以实现自动化压缩png/jpg图片,提高研发效率,使得项目在打包构建后体积可以大幅缩减,但又不会影响图片质量,以及查看。

    nodemailer实现构建打包自动推送邮箱

    ← nodemailer实现构建打包自动推送邮箱

    最近更新
    01
    flex布局页面自适应滚动条问题
    12-28
    02
    前后端分离开发请求接口跨域如何携带cookie的问题
    12-28
    03
    怎么实现div长宽比固定width-height4比3
    12-28
    更多文章>
    Theme by Vdoing | Copyright © 2017-2022 Iwen | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式