Ich versuche, einige Zuschneiden zu tun mit graphicsmagick
und cfs
und das Ergebnis S3 speichern (cfs: gridfs, cfs: graphicsmagick und cfs: s3).graphicsmagick und cfs: Shop ein Bild zu drei Geschäfte abgeschnitten - die Schaffung Temp Strom
Das beschnittene Bild sollte in drei Speichern gespeichert werden (Haupt-, öffentliche und Miniaturansicht) - die Filialen selbst haben einige transformWrite
Funktionen. Also dachte ich, ich müsste dafür einen temporären Stream erstellen, aber ich konnte diesen temporären Stream nicht erstellen. Ich brauche etwas Hilfe dafür.
Ich verwende die gridFS, kein Dateisystem
var file = Media.findOne({ _id: fileId }),
read = file.createReadStream('main');
gmread = gm(read)
.crop(selection.w, selection.h, selection.x, selection.y)
.stream();
gmread.on('end', Meteor.bindEnvironment(function (error, result) {
if (error)
console.warn(error);
// create a temp stream
var tmpread = fs.createReadStream(filename); // <-- MY PROBLEM
tmpread.on('end', Meteor.bindEnvironment(function (error, result) {
if (error)
console.warn(error);
}));
// set cropped image to main store
var write = file.createWriteStream('main');
tmpread.pipe(write);
// set public store image
var writePublic = file.createWriteStream('public');
gm(tmpread).stream().pipe(writePublic);
// set thumbnail image
var writeThumbnail = file.createWriteStream('thumbnail');
gm(tmpread).stream().pipe(writeThumbnail);
}));
gmread.pipe(temp);
Aber was ich tun muss, etwas wie ein Bildbearbeitungsprogramm zu erstellen: Wenn ich auf eine Schaltfläche klicke, sollte eine Beschneidung gemacht werden (Beispiel), für eine andere Schaltfläche gibt es eine andere Aktion. Und das sollte dann für jeden Laden getan werden. Deshalb mache ich zuerst die Manipulation und schreibe dann Stream in den Laden ... – user3142695