以下代码会抛出错误。
错误:命令失败:gm convert:geometry不包含图像 (无法裁剪图像)。
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 的大小。
答案 0 :(得分: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;
});
});
});
在同一条链上做两件事时我遇到了一些问题。
答案 1 :(得分:0)
您似乎正在读取和写入系统的根目录。除非你以root身份/管理员身份运行,否则你将无法获得正确的权限,如果你这样做,你可能(当然如果这是Web服务器的一部分)会打开一个巨大的安全漏洞。 / p>