急求 node 图片裁切 后台怎么处理


目的:对上传上来的图片进行裁切。

自己网上百度过,尝试使用 gm ,怎么弄就是不行。imageMagick这个也进行了引用。

出现的问题:图片能生成,但是图片没内容是空白的。

代码:


 var fileReadStream = fs.createReadStream(old_path);
var fileWriteStream = fs.createWriteStream(new_path);

            gm(fileReadStream)
            .resize('200', '200')
            .stream(function(err, stdout, stderr) {
                stdout.pipe(fileWriteStream);
            });

发现自己问题出在哪里了:
gm中有一段是这么写的自己没注意


 First download and install GraphicsMagick or ImageMagick. In Mac OS X, you can simply use Homebrew and do:

我以为是npm安装ImageMagick,其实还需要配置环境变量。谢谢下面的回答

node.js

dishors 9 years, 5 months ago

先占位置,有时间做个demo

我爱桂言叶 answered 9 years, 5 months ago

听起来像是某个依赖包没有装上导致的

我是魔法师 answered 9 years, 5 months ago

巧了,我的项目中,我就是拿nodejs当图片服务器的。以前有写着图片处理的代码,你看下哈,我这里没啥问题。 我这个是添加水印和修改大小的


 var gm = require('gm');
var watermark = 'logo.png';
var spawn = require('child_process').spawn;

function resize_image(path, max_width, callback){
    gm(path).resize(max_width, null, '>').quality(80).setFormat('JPEG').write(path, callback);
}

function add_watermark(path, callback){
    var composite = spawn('gm', ['composite', '-gravity', 'SouthEast', '-dissolve', '80', 'logo.png', path, path]);
    composite.on('exit', function(code){
        callback();
    });
}

俊程Jared answered 9 years, 5 months ago

Your Answer