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/administrator として実行していない限り、それを行うための適切なアクセス許可はありません。もしそうなら、おそらく (これが Web サーバーの一部である場合) 巨大なセキュリティ ホールを開いていることになります。

于 2012-09-18T07:02:40.113 に答える