我在ExpressJS上有一个人们可以上传图像的网站,当然,我必须将其调整为标准尺寸。问题是,我写了一段代码,如果用户只上传一个图像,如果上传了两个或三个,NodeJS崩溃了。我确定,问题是在我的函数调用for循环中,我尝试了一些不同的方法,但是没有解决问题。希望你能帮我!
// ...
var resizeImage = function(image) {
gm(image)
.size(function(err, size) {
if (!err) {
if (size.width > size.height && size.width > 1024) {
gm(image)
.resize(1024, null)
.write(image, function(err) { if (err) throw err; });
} else if (size.width < size.height && size.height > 800) {
gm(image)
.resize(null, 800)
.write(image, function(err) { if (err) throw err });
} else if (size.width === size.height && size.height > 800) {
gm(image)
.resize(null, 800)
.write(image, function(err) { if (err) throw err });
}
}
});
};
if (rawImagesPath.length) {
for (var j = 0; j < rawImagesPath.length; j++) {
resizeImage(rawImagesPath[j]);
}
}
// ...
答案 0 :(得分:0)
最后,我找到了如何解决这个问题!这是代码!
var xy = 0;
var resizeImage = function() {
var thisImage = rawImagesPath[xy];
gm(thisImage)
.size(function(err, size) {
if (err)
console.log(err);
if (!size) {
xy = 2;
} else if (size.width > size.height && size.width > 1024) {
gm(thisImage)
.resize(1024, null)
.write(thisImage, function(err) { if (err) console.log(err); });
} else if (size.width < size.height && size.height > 800) {
gm(thisImage)
.resize(null, 800)
.write(thisImage, function(err) { if (err) console.log(err); });
} else if (size.width === size.height && size.height > 800) {
gm(thisImage)
.resize(null, 800)
.write(thisImage, function(err) { if (err) console.log(err); });
}
if (xy == 2)
clearInterval(yz);
else
xy++;
});
};
var yz = setInterval(resizeImage, 1000);