0
Этот код работает большую часть времени, но иногда он генерирует нулевые байтовые изображения. Я подозреваю, что это часть потока, где изображение масштабируется .sample(...)
. Спасибо за любую помощь!FS.Store ненадежное преобразование изображений gm
function scaleToTargetByInt (width) {
var maxWidth = 216 * 2; // 2x thumbnail size optimized for Retina display
var originalWidth = width;
var scaleInt = Math.floor(maxWidth/originalWidth);
var scaleSize = scaleInt * originalWidth;
return scaleSize;
}
var OriginalsStore = new FS.Store.FileSystem("OriginalPix", {
path: pathToOriginalsFolder,
transformWrite: function (fileObj, readStream, writeStream) {
// read image dimensions and write to metadata
gm(readStream)
.size({bufferStream: true}, FS.Utility.safeCallback(function (err, size) {
if (err) {
// handle the error
} else {
fileObj.update({$set: {'metadata.width': size.width, 'metadata.height': size.height}});
}
}))
// read metadata.width and scale acordingly
.sample(scaleToTargetByInt(fileObj.metadata.width))
.stream()
.pipe(writeStream);
}
});
Спасибо @Ethaan, но предложенные изменения (удаление 'var', добавление' {_id: fileObj._id} ') не улучшают что-то. Используя исходный код, я получаю эту ошибку 'W20150204-00: 00: 15.775 (-8)? (STDERR) stream.js: 94 W20150204-00: 00: 15.775 (-8)? (STDERR) throw er; // Ошибка необработанного потока в трубе. – Kai
сделайте это пожалуйста. 'console.log (fileObj)' im довольно уверен, что файлObj не определен – Ethaan
Плюс этот 'W20150204-00: 00: 15.776 (-8)? (STDERR) Ошибка: ENOENT, open '/ Users/kai/eboydb/.meteor/local/cfs/files/_tempstore/MyPix-LEPFsPyjCs6H9Y5iy-0.chunk'' – Kai