text 图像由Node.js任务缩小。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text 图像由Node.js任务缩小。相关的知识,希望对你有一定的参考价值。

const glob = require('glob')
const mkdirp = require('mkdirp')
const imagemin = require('imagemin')
const pngquant = require('imagemin-pngquant')
const mozjpeg = require('imagemin-mozjpeg')
const gifsicle = require('imagemin-gifsicle')
const svgo = require('imagemin-svgo')
const {
  readFile,
  writeFile
} = require('fs')
const {
  dirname,
  extname,
  join,
  relative
} = require('path')

const plugins = {
  png: pngquant({
    quality: [0.8, 0.9], // 0 ~ 1
    speed: 1
  }),
  jpg: mozjpeg({
    quality: 80 // 0 ~ 100
  }),
  gif: gifsicle({
    optimizationLevel: 3 // 1 ~ 3
  }),
  svg: svgo({})
}

glob('src/**/*.+(png|jpg|gif|svg)', (err, files) => {
  if (err) {
    console.log(err)
    return
  }

  for (const file of files) {
    readFile(file, 'base64', (err, img) => {
      if (err) {
        console.log(err)
        return
      }

      if (!img) {
        return
      }

      (async () => {
        const _ext = extname(file).replace('.', '')

        const _buf = await imagemin
          .buffer(new Buffer(img, 'base64'), {
            plugins: [
              plugins[_ext],
            ],
          })
          .catch((err) => {
            if (err) {
              console.log(err);
              return;
            }
          })

        const _dest = join('./dest', relative('./src', file))
        mkdirp(dirname(_dest), (err) => {
          if (err) {
            console.log(err)
            return
          }

          writeFile(_dest, _buf, (err) => {
            if (err) {
              console.log(err)
              return
            }
          })

          console.log(`finish: ${ file }`)
        })
      })()
    })
  }
})

以上是关于text 图像由Node.js任务缩小。的主要内容,如果未能解决你的问题,请参考以下文章

缩小会影响 Node.js 的性能吗?

Node.Js:资源解释为字体但使用 MIME 类型 text/html 传输

Node.js:将 Android-Base64 编码图像另存为文件

Heroku 构建失败 - 推送被拒绝,无法编译 node.js 应用程序,无法缩小包,许多错误

Node.js 微服务实践

在 Heroku 上运行 Grunt 构建任务