节点gm-使用裁切和调整大小导致错误 [英] Node gm - use crop and resize cause error

查看:143
本文介绍了节点gm-使用裁切和调整大小导致错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码抛出错误。


错误:命令失败:gm转换:几何图形不包含图像

Error: Command failed: gm convert: geometry does not contain image (unable to crop image).



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

Is seem that gm can not resolve the size of beforeCrop.

推荐答案

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

Why not piping to a stream and reading from it on the fly?

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

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

I'd also consider piping to another stream after cropping like so:

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

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

I had some problems when doing both on the same chain.

这篇关于节点gm-使用裁切和调整大小导致错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆