我正在尝试使用graphicmagick制作原始图像的缩略图, 我正在尝试GM Resize中的一个例子:
var gm = require('gm').subClass({
imageMagick: true
});
var currentDir = __dirname + "\\imgs";
//var gm = require('gm');
console.log(currentDir);
gm(currentDir + "\\Balls.jpg")
.resize(58, 50, '%')
.write(currentDir+"\\newImage.jpg", function (err) {
if (err) return console.dir(arguments)
console.log(this.outname + " created :: " + arguments[3])
});
此微修复后,它不会显示路径错误。但它给了我另一个错误:
{ '0':
{ [Error: Command failed: Invalid Parameter - -resize
] code: 4, signal: null },
'1': '',
'2': 'Invalid Parameter - -resize\r\n',
'3': 'convert "C:\\Users\\ltang\\Documents\\GitHub\\testMyGM\\imgs\\Balls.jpg" "-resize" "58x50%" "C:\\Users\\ltang\\Documents\\GitHub\\testMyGM\\imgs\\newImage.jpg"' }
任何人都知道为什么会出现“resize \ r \ n”?
更新
我在这里记录我的问题:Invalid Parameter,我找到了一种方法来破解它。但我仍然对他们的样本无效的原因感到好奇。
答案 0 :(得分:1)
我破解了这个问题,我的黑客可以分两步完成:
更改导入包的方式:
var gm = require('gm').subClass({
imageMagick: true});
在.size()函数中定义.resize()函数:
gm(response).size(function(err, size) {
var scalingFactor = Math.min(myWidth /size.width, myWidth / size.height);
var width = scalingFactor * size.width;
var height = scalingFactor * size.height;
var index = key;
this.resize(width, height).toBuffer(
'JPG', function(err,
buffer) {
if (err) {
next(err);
} else {
next(null, buffer, key);
}
}); });
这个hack应该摆脱错误信息,但我也想知道它为什么会导致原始方法的错误。
答案 1 :(得分:0)
不深入了解graphicmagick和nodejs。我的回答很可能是错误的。
c:/ users / xxx / appdata / roaming / npm / npm_cache或类似的东西,你可能会找到输出。
你跑了" npm init"创建包文件?如果您的包裹位于计算机上的其他位置?
unix = / windows uses = \
您也可以尝试./或。\或../或.. \
您可能会尝试使用完整路径示例:
c:\ yadayada \ yada \ moo \ dooo \ image.jpg
看看会发生什么。 然后为你的.write做同样的事情
C:\ yadayada \矢田\も\ DOOO \ resize.jpg
看看会发生什么。