你好吗?
我正在创建此应用程序,必须像1000张照片一样下载并调整大小。
我正在使用mikeal的请求包来下载图像,并使用图形magick来调整它们的大小。 此外,我正在使用承诺对该过程进行并列化。
事情就是heroku失败并说
var request = require('request')
var mkdirp = require('mkdirp')
var fs = require('fs')
var path = require('path');
var randomstring = require('randomstring');
var appDir = path.dirname(require.main.filename);
var util = require('util')
var gm = require('gm');
var sqldb = require('../../sqldb');
var MlStock = sqldb.MlStock;
MlStock.findAll({})
.then(fixProductsImages)
function fixProductsImages(products) {
return Promise.all(products.map(fixProductImages))
}
function fixProductImages(product) {
return Promise.all(product.imageVariations.map(makeImageLocal))
.then((imageVariations)=>{
// console.log('Updating product images: ', product, '\n', imageVariations)
product.update({
imageVariations: imageVariations
})
})
}
function makeImageLocal(imageObject) {
return new Promise((resolve, reject) => {
request({ url: imageObject.url, encoding: 'binary' }, function(err, res, body) {
if (err) {
console.log(err);
resolve(imageObject);
};
mkdirp(path.join(appDir, 'tempImages'), function(err) {
var random = randomstring.generate();
var imagePath = path.join(appDir, 'tempImages') + '/' + random + '.jpg';
fs.writeFile(imagePath, body, 'binary', function(err) {
if (err) {
console.log(err);
resolve(imageObject);
};
gm(imagePath)
.fuzz(1, 1)
.trim()
.resize(500, 500)
.gravity('Center')
.extent(500, 500)
.compress('BZip')
.write(imagePath, function(err) {
if (err) {
console.log(err);
resolve(imageObject);
};
console.log("The file was saved! -- ", imagePath);
resolve({ url: imagePath })
});
});
})
})
})
}
我正在使用自由计划,因为它是我自己使用的应用程序,我希望能够支付更多内存。
如何重构我的代码,以免内存不足?
我的代码看起来像这样:
**<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS: You can use this stylesheet to override any Bootstrap styles and/or apply your own styles -->
<link href="css/custom.css" rel="stylesheet">**