以下代码抛出错误。


  错误:命令失败:gm转换:几何不包含图像
  (无法裁剪图像)。


var gm = require('gm');

gm('/origin.jpg')
.resize(600)
.write('/beforeCrop', function (err) {
    // beforeCrop is 600 * 450
    gm('/beforeCrop')
    .crop(70, 70, 100, 100)
    .resize(50, 50)
    .write('/result', function (err) {
        if (err) throw err;
    });
});


看来gm无法解析beforeCrop的大小。

最佳答案

为什么不通过管道传输到流中并即时读取?

var gm = require('gm');

gm('/origin.jpg')
.resize(600)
.stream(function (err,stdout,stderr) {
    // beforeCrop is 600 * 450
    gm(stdout) // gm can read buffers ;)
    .crop(70, 70, 100, 100)
    .resize(50, 50)
    .write('/result', function (err) {
        if (err) throw err;
    });
});


我还考虑在裁剪后将管道输送到另一个流,如下所示:

var gm = require('gm');

gm('/origin.jpg')
.resize(600)
.stream(function (err,stdout,stderr) {
    // beforeCrop is 600 * 450
    gm(stdout) // gm can read buffers ;)
    .crop(70, 70, 100, 100).stream(function (err,stdout,stderr) {
        gm(stdout).resize(50, 50)
        .write('/result', function (err) {
            if (err) throw err;
        });
    });
});


当在同一条链上同时执行时,我遇到了一些问题。

关于node.js - Node gm-使用裁切和调整大小导致错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12455559/

10-10 22:10