我正在尝试使用imagemagick
和node
处理一堆图片。我有一个图像文件夹,遍历它们,裁剪,并将庄稼保存到另一个文件夹:
var fs = require('fs')
, im = require('imagemagick');
var path = '/Users/me/Pictures';
var rs = [[100,100],[200,200],[300,300],[400,400],[500,500],[600,600],[700,700],[800,800],[900,900],[1000,1000],[1100,1100],[1200,1200]];
fs.readdir(path, function(err, items) {
var counter = 0;
var start = new Date().getTime();
for (var i=0; i<items.length; i++) {
var image = items[i];
if (image.endsWith('png') || image.endsWith('jpg')) {
console.log('Processing ' + image);
for (var r=0; r<rs.length; r++) {
counter++;
console.log(counter);
im.crop({
srcPath: path + '/' + image,
dstPath: '/Users/me/Pictures/rends/' + c + image + rs[r][0] + 'x' + rs[r][1] + '.jpg',
width: rs[r][0],
height: rs[r][1],
quality: 1
}, function(err, stdout, stderr){
if (err) console.log('error:' + err);
});
}
}
}
console.log(counter + ' images processed in ' + (new Date().getTime() - start) + 'milliseconds.');
});
现在问题是,它最初工作并且裁剪~540张图像(一两次或多或少)然后失败并出现以下错误:
/Users/me/my_stuff/node_modules/imagemagick/imagemagick.js:76
child.stdout.setEncoding(options.encoding);
^
TypeError: Cannot read property 'setEncoding' of undefined
at exec2 (/Users/me/my_stuff/node_modules/imagemagick/imagemagick.js:76:15)
at Object.exports.identify (/Users/me/my_stuff/node_modules/imagemagick/imagemagick.js:149:14)
at Object.exports.crop (/Users/me/my_stuff/node_modules/imagemagick/imagemagick.js:292:11)
at /Users/me/my_stuff/node/im.js:18:8
at FSReqWrap.oncomplete (fs.js:117:15)
P.S。我试过了graphicsmagick
,它也以一种非常类似的方式失败了。
非常感谢任何帮助。