1

以下代码引发错误。

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

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的大小。

4

2 回答 2

4

为什么不通过管道连接到流并即时读取呢?

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

在同一条链上进行这两项操作时,我遇到了一些问题。

于 2012-11-02T01:08:38.057 回答
0

您似乎正在读取和写入系统的根目录。除非您以 root/管理员身份运行,否则您将没有正确的权限来执行此操作,如果您是,您可能(当然,如果这是 Web 服务器的一部分)打开了一个巨大的安全漏洞。

于 2012-09-18T07:02:40.113 回答