首页前端开发JavaScript关于electron-vue图片压缩

关于electron-vue图片压缩

时间2024-01-30 01:52:02发布访客分类JavaScript浏览966
导读:收集整理的这篇文章主要介绍了关于electron-vue图片压缩,觉得挺不错的,现在分享给大家,也给大家做个参考。最近用electron-vue(Electron :基于 chromium 和 Node.js, 让你可以使用 HTML, C...
收集整理的这篇文章主要介绍了关于electron-vue图片压缩,觉得挺不错的,现在分享给大家,也给大家做个参考。最近用electron-vue(Electron :基于 chromium 和 Node.js, 让你可以使用 HTML, CSS 和 JavaScript 构建应用)撸了一个图片压缩的小软件,平时工作还是需要用得到的,支持常用的图片格式;

可以设置压缩比例

1、支持设置固定宽高

2、支持固定宽或高(按原图比例缩小)

3、支持等比例缩小

具体操作如下:

1、前端把图片的路径和保存压缩后的路径传给后端,这个通过electron事件通讯就可以了

调用的是ipcRenderer.send事件,传入一个事件名,后端用ipcRenderer.on接收即可,

这里需要注意一下,我们使用ipcRenderer.once接收一次就可以,避免重复接收消息。

具体参考如下代码:

await request('resize', this.form.imgPath , this.form.imgSavePath)  request方法是对ipcRenderer.send做的一个封装  async function request( event = '', ...params) {
  if (!event) {
    return  }
      // 构造p@R_406_2899@ise  const reply = new PRomise((resolve, reject) =>
 {
    // 数据返回事件,事先约定    const eventReply = `${
event}
    -reply`    ipcRenderer.once(eventReply, (event, data) =>
 {
      resolve(data)    }
)  }
)  // 触发事件  ipcRenderer.send(event, ...params)  // 返回promise  return reply}
    

2、后端刚开始考虑用image-size这个库获取图片的宽高;用法如下:只需要传入图片的路径即可

const sizeof = require('image-size') let dimensions = sizeOf(path)  if(!dimensions){
    return  }
      let width = dimensions.width  let height = dimensions.height

经测试后发现了一点小问题,就是偶尔出现获取失败的情况,既然有问题那就不能使用了。后面经查询用这个probe-image-size库是没有问题的,使用方式如下:

const probe = require('probe-image-size');
 let dimensions = probe.sync(require('fs').reaDFileSync(path))  if(!dimensions){
    return  }
      let width = dimensions.width  let height = dimensions.height

3、最后执行压缩即可,传入输出图片路径和保存的宽高,调用resize-optimize-images这个库,代码如下:

fs.readFile(path, function (err, originBuffer) {
    if (err) {
      return    }
    output = output + `/${
basename(path)}
`    fs.wrITeFile(output, originBuffer, async function (err) {
      if (err) {
        return      }
      const options = {
        images: [output],        width,        height,        quality: 95,      }
      //执行压缩.      await resizeOptimizeImages(options)    }
)  }
    )

总结:

以上就是在使用image-size过程中碰到的一点小问题,虽然没有从根源解决问题,但是也能从中学习到一些东西,有时候想要达到自己想要的功能就不能固定使用一种方式,需要学会变通,更重要的是要学会分析问题和解决问题。

更多请关注其它相关文章!

以上就是关于electron-vue图片压缩的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: CSS+JS如何制作皮卡丘动画(代码...下一篇:JavaScript怎么实现页面的刷新猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 关于electron-vue图片压缩
本文地址: https://pptw.com/jishu/591884.html
javascript中怎么获取方法(函数)的参数个数 JavaScript怎么实现页面的刷新

游客 回复需填写必要信息