契机

生活中遇到上传图片的时候有图片大小限制,每次都得打开图片编辑工具然后另存取缩小,比较麻烦,索性自己写一个程序来用。

脚手架选取

首先查阅了官网,没有提供命令行的以自动生成程序初始代码,因此自己去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。后续还要优化。


扫码关注微信公众号获取更多资讯


all2005
3.4k 声望36 粉丝