亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

詳解基于electron制作一個node壓縮圖片的桌面應用

2019-11-19 12:11:48
字體:
來源:轉載
供稿:網友

基于electron制作一個node壓縮圖片的桌面應用

下載地址:https://github.com/zenoslin/imagemin-electron/releases

項目源碼Github:https://github.com/zenoslin/imagemin-electron

準備工作

我們來整理一下我們需要做什么:

  1. 壓縮圖片模塊
  2. 獲取文件路徑
  3. 桌面應用生成

壓縮圖片

我們需要使用imagemin這個庫來壓縮圖片,這里我們把這個庫封裝成壓縮模塊。

const imagemin = require('imagemin')const imageminMozjpeg = require('imagemin-mozjpeg')const imageminPngquant = require('imagemin-pngquant')const imageminGifsicle = require('imagemin-gifsicle')async function compass(input, output, opts, callback) {  let log = await imageminCompass(input, output, opts)  callback(log)}async function imageminCompass(input, output = 'temp', opts = {}) {  input = (typeof input == 'string') ? [input] : input;  return await imagemin(input, output, {      use: [        imageminMozjpeg(opts),        imageminPngquant(opts),        imageminGifsicle({          optimizationLevel:3        })      ]    })    .then(file => {      return {        status: true,        data: file      };    })    .catch(e => {      console.log(e);      return {        status: false,        error: e.toString()      }    });}module.exports = {  compass: compass};

獲取文件路徑

在我的理解中,electron用的是一個mini版的chrome瀏覽器,然后幫我們實現了瀏覽器跟系統(win & mac)交互的的許多api接口。

我們可以通過正常寫網頁的方式進行開發,當需要進行與系統交互的操作時,我們只需要在我們網頁中的js進程(這里應該叫做這個桌面應用的渲染進程)拋出一個事件,然后在electron的主進程進行監聽,收到事件后調用相應的api接口,結果再反過來用事件的方式拋給渲染進程。

electron的安裝和學習可以上官網https://electronjs.org/進行學習。

ps:這里有一個electron的坑說一下,electron和jquery存在沖突,所以直接用script標簽引入會失敗,在windows對象中找不到jQuery對象。這里我們可以加這么一句解決。

<script src="./src/jquery.min.js"></script><script>if (typeof module === 'object') {window.jQuery = window.$ = module.exports;};</script>

回到正題,首先我們在index.html中增加一個按鈕來打開系統的路徑選擇器。

<button id="input-btn">選擇路徑</button>

在渲染進程renderer.js中,監聽按鈕的點擊,以及監聽主線程返回的事件。

const {ipcRenderer} = require('electron')const inputBtn = document.getElementById('input-btn')inputBtn.addEventListener('click', (event) => {  console.log('點擊輸入按鈕')  ipcRenderer.send('open-file-dialog-input')})ipcRenderer.on('input-path', (event, path) => {  console.log(`收到完成信息 ${path}`)  _inputPath = path  inputPath.value = `${path}`})

在主進程main.js中,監聽渲染進程拋出的事件,并調用api接口后放回結果。

ipcMain.on('open-file-dialog-input', (event) => {  dialog.showOpenDialog({    properties: ['openFile', 'openDirectory']  }, (files) => {    if (files) {      console.log('發出完成信息')      event.sender.send('input-path', files)    }  })})

這樣我們完成了使用系統api接口選擇路徑的功能。但其實我們實際的使用場景中路徑選擇器的方式并不是特別的方便,所以我們實現另一個功能。

拖動將文件或者文件夾拖入網頁中,獲取到對應的路徑。這里使用了js+div實現了這個功能。

index.html

<!--可拖入區域--><div id="holder" class="jumbotron holder"></div><style>    /* 拖拽的區域樣式 */    .holder {      min-height: 200px;      background: #eee;      margin: 2em;      padding: 1em;      border: 0px dotted #eee;      border-radius: 10px;      transition: .3s all ease-in-out;    }    /* 拖拽時用jQuery為其添加邊框樣式的class */    .holder-ondrag {      border: 20px dotted #d45700;    }</style>

renderer.js

const holder = document.getElementById("holder")holder.ondragenter = holder.ondragover = (event) => {  event.preventDefault()  holder.className = "jumbotron holder-ondrag"}holder.ondragleave = (event) => {  event.preventDefault()  holder.className = "jumbotron holder"}holder.ondrop = (event) => {  // 調用 preventDefault() 來避免瀏覽器對數據的默認處理  //(drop 事件的默認行為是以鏈接形式打開  event.preventDefault()  holder.className = "jumbotron holder"  var file = event.dataTransfer.files[0]  _inputPath = inputPath.value = file.path}

將我們獲取到的文件路徑傳入前面編寫的壓縮文件模塊,這樣我們就可以完成了圖片的壓縮。

桌面應用生成

最后,我們利用electron-packager完成對electron桌面應用的打包。

//macelectron-packager . --out=out --platform=mas --arch=x64//winelectron-packager . --platform=win32 --arch=x64

ps:在非Windows主機平臺上進行打包,需要安裝Wine 1.6或更高版本

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜未满十八勿入免费观看全集| 欧美黑人狂野猛交老妇| 亚洲精品动漫久久久久| 8x拔播拔播x8国产精品| 九九久久精品一区| 日韩欧美亚洲综合| 国产精品一区二区久久国产| 亚洲欧美成人精品| 亚洲一区二区久久久久久久| 欧美黄色片在线观看| 亚洲精品美女在线观看| 欧美怡春院一区二区三区| 欧美激情极品视频| 日韩精品日韩在线观看| 国产精品黄色av| 丝袜情趣国产精品| 精品一区二区三区四区在线| 热久久这里只有| 91精品国产乱码久久久久久久久| 亚洲综合色av| 欧美成在线视频| 国产精品日韩精品| 日韩在线欧美在线| 亚洲精品在线91| 日韩在线中文字| 久久成人精品电影| 一本一道久久a久久精品逆3p| 国产成人久久久| 91牛牛免费视频| 欧美在线一区二区三区四| 亚洲欧美资源在线| 6080yy精品一区二区三区| 中日韩美女免费视频网站在线观看| 亚洲欧美国产精品| 久久久久久12| 亚洲欧美精品中文字幕在线| 欧美极品少妇xxxxⅹ免费视频| 精品日本高清在线播放| 深夜福利91大全| 欧美极品少妇全裸体| 综合欧美国产视频二区| 日韩成人在线免费观看| 欧美日韩国产中字| 久久久精品免费视频| 成人有码在线视频| 亚洲精品免费av| 精品国产999| 久久九九全国免费精品观看| 国产成人精品一区| 正在播放欧美一区| 一级做a爰片久久毛片美女图片| 国产免费一区二区三区在线观看| 少妇高潮久久77777| 久久青草精品视频免费观看| 亚洲福利在线观看| 91最新国产视频| 91精品国产自产在线观看永久| 国产69精品久久久久99| 中文字幕在线看视频国产欧美| 欧美电影免费播放| 欧美性高跟鞋xxxxhd| 亚洲精品国产suv| 国产网站欧美日韩免费精品在线观看| 国产一区二区日韩精品欧美精品| 伊人伊成久久人综合网站| 欧亚精品中文字幕| 精品在线小视频| 亚洲国产91精品在线观看| 国产欧美日韩免费看aⅴ视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 精品亚洲一区二区三区四区五区| 色婷婷av一区二区三区久久| 久久亚洲国产成人| 欧美午夜精品久久久久久人妖| 久久久电影免费观看完整版| 国产精品自产拍在线观看中文| 91久久久久久久久久久| 91极品视频在线| 91精品国产综合久久香蕉922| 久久影视三级福利片| 97色在线播放视频| 国产精品久久久久不卡| 国内精品小视频在线观看| 精品视频在线播放| 国产精品扒开腿做爽爽爽的视频| 国产男人精品视频| 国产成人av在线| 亚洲国产成人精品久久| 国产精品一久久香蕉国产线看观看| 51ⅴ精品国产91久久久久久| 欧美乱大交做爰xxxⅹ性3| 亚洲天堂色网站| 在线精品国产成人综合| 国产精品久久久久91| 日韩中文在线观看| 成人观看高清在线观看免费| 日本电影亚洲天堂| 中文字幕欧美日韩精品| 久久久久免费精品国产| 97视频人免费观看| 欧美日韩亚洲一区二| 欧美成人中文字幕在线| 国产精品入口免费视频一| 97视频在线观看亚洲| 亚洲精品91美女久久久久久久| 久久久久久久97| 一区二区三区国产在线观看| 91精品国产成人| 欧美综合在线第二页| 成人av资源在线播放| 色老头一区二区三区在线观看| 国产成人精品免费久久久久| 成人信息集中地欧美| 日韩欧美一区二区在线| 亚洲视频999| 亚洲欧美第一页| 亚洲国产精品嫩草影院久久| 亚洲精品720p| 国产欧美中文字幕| 精品中文字幕在线观看| 成人国内精品久久久久一区| 亚洲精品98久久久久久中文字幕| 欧美国产极速在线| 成人午夜两性视频| 91精品久久久久久久久久久久久| 久久香蕉国产线看观看av| 亚洲欧洲在线视频| 国产大片精品免费永久看nba| 日韩亚洲欧美中文在线| 欧美乱大交xxxxx| 亚洲天堂男人的天堂| 国产精品一区二区电影| 国产精品日韩在线| 国产精品国产三级国产aⅴ浪潮| 欧美老女人www| 91成人性视频| 日本sm极度另类视频| 亚洲精品在线视频| 国产亚洲欧美视频| 亚洲乱码国产乱码精品精| 国产剧情日韩欧美| 中文欧美在线视频| 国产精品高潮呻吟久久av黑人| 热久久美女精品天天吊色| 亚洲成人网在线| 中文欧美日本在线资源| 国产精品一区二区电影| 69**夜色精品国产69乱| 日韩高清欧美高清| 麻豆成人在线看| 亚洲a成v人在线观看| 精品中文字幕在线观看| 一区二区成人精品| 视频一区视频二区国产精品| 欧美在线视频免费观看| 91免费视频网站| 久久久国产精彩视频美女艺术照福利| 欧美精品在线免费| 最近免费中文字幕视频2019| 91亚洲va在线va天堂va国| 国产精品视频公开费视频| 亚洲精品xxxx| 亚洲精品国产精品乱码不99按摩| 亚洲欧美另类国产|