Próbuję wykonać jakąś manipulację obrazem poprzez gm
w collectionFS
, ponieważ muszę przeczytać strumień i zapisać go z powrotem do tego samego pliku, muszę użyć pliku tymczasowego - jak pokazano poniżej.gm: zmiana rozmiaru obrazu, jeśli jest szerszy niż 1000px
Chcę sprawdzić, czy obraz jest szerszy niż 1000 pikseli. W takim przypadku należy zmienić rozmiar na 1000px.
Niestety to nie działa, jak mam błędy TypeError: Object [object Object] has no method 'pipe'
i Error: gm().stream() or gm().write() with a non-readable stream.
var fs = Npm.require('fs'),
file = Images.findOne({ _id: fileId }),
read = file.createReadStream('public'),
filename = '/tmp/gm_' + Date.now(),
temp = fs.createWriteStream(filename);
if (method == 'resize') {
// resize to 1000px, if image is bigger
gmread = gm(read);
gmread.size(function(err, size){
if(size.width > 1000) {
gmread.resize('1000').stream();
}
});
}
gmread.on('end', Meteor.bindEnvironment(function (error, result) {
if (error) console.warn(error);
var tmpread = fs.createReadStream(filename);
write = file.createWriteStream('public');
tmpread.on('end', Meteor.bindEnvironment(function (error, result) {
if (error) console.warn(error);
}));
tmpread.pipe(write);
}));
gmread.pipe(temp);
Używasz CFS: GraphicsMagick? – Ivan
tak, używam tego. – user3142695
Czy funkcja "gm.isAvailable()" zwraca wartość true? Jeśli nie, to nie ma plików binarnych w systemie, aby gm działał. – Ivan