node 图片压缩,图片压缩 js

  node 图片压缩,图片压缩 js

  如何用Node.js压缩图片?下面这篇文章介绍了使用Node.js进行图像压缩的方法大家看看吧!

  node.js速度课程简介:进入学习

  

一、内容简介

  效果预览:

  

二、node压缩图片

  一开始打算用TinyPNG的API实现图像压缩,但是尝试后发现压缩速度极慢,而且好像还很花钱,于是果断放弃了。请改用imagemin。

  这里有个坑:因为imagemin不能直接压缩图片,所以需要依赖imagemin-jpegtran和imagemin-pngquant,但是安装imagemin-pngquant的时候不会安装。一个原因是这个库是基于一些底层语言实现的,所以不能直接安装,需要在你的电脑上安装另一个依赖的libpng。

  安装libpng

  直接贴一个brew安装的地址:zhuanlan.zhihu.com/p/90508170,基本上只要对他说一下knock命令就可以安装brew了。最后,我们将执行brew install libpng。libpng安装成功后,我们就可以在项目中安装imagemin-pngquant了。

  代码实现压缩图片根据需求,我们肯定不希望他把图片压缩放在文件夹里。而是需要直接接收代码中的压缩内容,直接上传到七牛。那么我们就要用imagemin.buffer这个方法接收一个buffer对象,然后压缩后返回一个buffer。我们只需要把压缩的缓冲区直接上传给七头牛。就是这个想法。下面是代码实现:

  //获取缓冲区

  export const getBufferFromFile=(file path:string):promise buffer={

  返回新承诺((解决,拒绝)={

  fs.readFile(filePath,function (err: any,res: any) {

  如果(!呃){

  解析(分辨率)

  }

  })

  })

  }

  //压缩图片,传入图片文件的路径,通过getBufferFromFile方法转换成buffer并压缩。

  const imageg zip=async(loaclFile:string):promise any={

  const buffer file=await getBufferFromFile(loaclFile)

  let res

  尝试{

  RES=await image min . buffer(buffer file,{

  插件:[

  imageminJpegtran(),

  imageminPngquant({

  质量:[0.6,0.8],

  }),

  ],

  })

  } catch (err) {

  console.log(error ,err)

  res=null

  }

  返回资源

  }这样我们就可以轻松实现图像压缩了。现在,我们重写一下,上传到七牛:因为之前没有压缩,所以可以直接上传文件路径到七牛。压缩后我们只有buffer,需要上传buffer给七头牛:

  gzipImage ? putStream : putFile,如果我们是获取到buffer就使用formUploader.putStream,否则只需要formUploader.putFile上传

  export const upImageToQiniu=async(

  loaclFile: string,

  CB:{(RES:any):void;(arg0: any): void },

  upConfig:qiniupconfig

  )={

  const config=new qiniu . conf . config()

  const form uploader=new qi Niu . form _ up。表单上传程序(配置)

  const putExtra=new qiniu.form_up。PutExtra()

  const token=getToken(up config . access key,upConfig.secretKey,upConfig.scope)

  让gzipImage

  if (upConfig.gzip) {

  gzip image=await image gzip(loaclFile)

  }

  //获取当前时间戳

  var key=新日期()。getTime()

  //上传调用方法

  const uploadFnName=gzipImage?putStream : putFile

  //上传内容

  const uploadItem=gzipImage?buffer tostream(gzip image):loaclFile

  //七头牛上传

  formUploader[uploadFnName](

  令牌,

  钥匙,

  上传项目,

  多放一点,

  function (respErr: any,respBody: any,respInfo: any) {

  if (respErr) {

  投掷响应

  }

  if (respInfo.statusCode===200) {

  const URL=up config . domain / resp body . key

  cb(网址)

  }

  }

  )

  }现在我们可以试验一下效果:

  在您的计算机中选择一张png图片:

  用我们的插件上传后,打开链接看看:

  图片压缩成功~ ~

  

三、解决遗留bug

  我在使用的时候发现了一个问题,就是有时候编辑器会突然卡住。后来发现原因是链接有空格的时候总会卡。之后,hover的其他内容没有回应。所以只需去掉hover的字符串空格,然后执行下面的链接获取方法:

  //当前行的文本内容

  const current line text=document . lineat(position)。text.replace (/\ s/g, )

四、结束

  更多编程知识请访问:编程入门!以上就是如何使用Node.js压缩图片?更多方法详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: