Использование удаленного изображения в ImageMagick с Node.JS - PullRequest
2 голосов
/ 19 апреля 2011

Как я могу использовать удаленное изображение в ImageMagick с Node.JS?

Я хочу достичь чего-то вроде:

im.identify('http://www.website.com/image.jpg', function(error, features) {
    console.log(features);
});

Ответы [ 4 ]

3 голосов
/ 09 марта 2012

Быстрый код изменения размера изображения

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;
        });
    }

});
2 голосов
/ 22 апреля 2015

Вот как я использую удаленные изображения:

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

1 голос
/ 19 апреля 2011

Трудно сказать, правильно ли я вас понял (учитывая объем информации, которую вы разместили здесь).

Единственный способ выполнить операции с удаленным образом с помощью imagemagick - это сначала загрузить его на локальный сервер. Это можно сделать с помощью http.ClientRequest класса node.js, после чего вы сможете работать с изображением как обычно, используя Imagemagick.

0 голосов
/ 16 января 2015

Это должно работать:

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);
        }
    }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...