[英]Using remote image in ImageMagick with Node.JS
如何在帶有Node.JS的ImageMagick中使用遠程圖像?
我想實現以下目標:
im.identify('http://www.website.com/image.jpg', function(error, features) {
console.log(features);
});
圖像大小調整的快速代碼段
http://nodejs.org/api/http.html
https://github.com/rsms/node-imagemagick
var thumb = '';
...
var request = http.get(options, function(response) {
var data = '';
response.setEncoding('binary');
response.on('data', function(chunk) {
data += chunk;
});
response.on('end', function () {
im.resize({
srcData: data,
width: 100,
height: 75,
format: 'jpg'
}, function(err, stdout, stderr) {
if (err) throw err;
thumb = stdout;
});
}
});
這就是我使用遠程圖像的方式:
var srcUrl = 'http://domain.com/path/to/image.jpg';
var http = srcUrl.charAt(4) == 's' ? require("https") : require("http");
var url = require("url");
http.get(url.parse(srcUrl), function(res) {
if(res.statusCode !== 200) {
throw 'statusCode returned: ' + res.statusCode;
}
else {
var data = new Array;
var dataLen = 0;
res.on("data", function (chunk) {
data.push(chunk);
dataLen += chunk.length;
});
res.on("end", function () {
var buf = new Buffer(dataLen);
for(var i=0,len=data.length,pos=0; i<len; i++) {
data[i].copy(buf, pos);
pos += data[i].length;
}
im(buf).imFunctionYouWantToUse();
});
}
});
信用轉到https://stuk.github.io/jszip/documentation/howto/read_zip.html
很難說我是否正確理解了您(考慮到您在此處發布的信息量)。
使用imagemagick對遠程圖像執行操作的唯一方法是先將其下載到本地服務器。 可以使用node.js的http.ClientRequest類完成此操作,之后,您應該可以使用Imagemagick照常對圖像進行操作。
這應該工作:
var request = require('request');
var fs = require('fs');
request({
'url': 'http://www.website.com/image.jpg',
'encoding':'binary'
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
fs.writeFileSync('/mylocalpath/image.jpg', body, 'binary');
im.identify('/mylocalpath/image.jpg',
function(error, features) {
console.log(features);
}
);
}else{
console.error(error, response);
}
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.