契机
生活中遇到上传图片的时候有图片大小限制,每次都得打开图片编辑工具然后另存取缩小,比较麻烦,索性自己写一个程序来用。
脚手架选取
首先查阅了官网,没有提供命令行的以自动生成程序初始代码,因此自己去github找了下,最后找了官方提供的electron-quick-start这个rep,然后在上面修改加入自己需要的配置。
着手开发
新建了代码仓库https://github.com/leeseean/electron-imagemin,首先图片压缩库研究了下最终选择了compressorjs
这个库,开发的基本思路的话上传文件,读取文件转成buffer,然后用compressorjs
压缩文件输出。
核心代码大约如下
new Compressor(file, {
quality,
success(blob) {
blob.arrayBuffer().then(arrBuf => {
const buf = new Uint8Array(arrBuf)
fs.writeFile(path, buf, err => {
if (err) {
alert(path + '压缩失败!')
}
})
})
},
error(err) {
alert(err.message)
},
})
遇到的坑
没有搞清楚arrayBuffer和buffer的区别,之前一直将arrayBuffer传给compressor压缩,导致压缩出来的文件压根不能用。
打包
这里使用electron-packager
打包,执行命令electron-packager ./ 图片压缩精灵 --all --out ./build
,生成应用程序。
成品
最终成品长这样,样式有点丑,功能正常。整个代码量不到1M,打包出来差不多有100M。后续还要优化。
扫码关注微信公众号获取更多资讯
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。