使用 graphicsmagick 在 collectionFS 中读取和写入相同的流
Same read- and write-stream in collectionFS using graphicsmagick
我需要使用 graphicsmagick
来处理图像。
我的 FSCollection 如下所示:
Images = new FS.Collection("media", {
stores: [
new FS.Store.FileSystem("anything"),
new FS.Store.FileSystem("something")
],
});
我的问题是,writeStream 应该和 readStream 一样。这不起作用,因为这会导致空结果:
var read = file.createReadStream('anything'),
write = file.createWriteStream('anything');
gm(read)
.crop(100,100,10,10)
.stream()
.on('end',function(){ console.log('done'); })
.on('error',function(err){ console.warn(err); })
.pipe(write, function (error) {
if (error) console.log(error);
else console.log('ok');
});
不可能同时读取和写入同一个文件,因为您会在尝试读取内容的同时覆盖内容。写入不同的文件,然后将其重命名为原始文件。
var read = file.createReadStream('anything'),
write = file.createWriteStream('anything-writeTo');
gm(read)
.crop(100,100,10,10)
.stream()
.on('error',function(err){ console.warn(err); })
.pipe(write, function (error) {
if (error) console.log(error);
else console.log('ok');
})
.on('end',function(){
file.rename("anything-writeTo", "anything", function (err) {
if (err) console.error(err);
else console.log('rename complete');
});
})
我需要使用 graphicsmagick
来处理图像。
我的 FSCollection 如下所示:
Images = new FS.Collection("media", {
stores: [
new FS.Store.FileSystem("anything"),
new FS.Store.FileSystem("something")
],
});
我的问题是,writeStream 应该和 readStream 一样。这不起作用,因为这会导致空结果:
var read = file.createReadStream('anything'),
write = file.createWriteStream('anything');
gm(read)
.crop(100,100,10,10)
.stream()
.on('end',function(){ console.log('done'); })
.on('error',function(err){ console.warn(err); })
.pipe(write, function (error) {
if (error) console.log(error);
else console.log('ok');
});
不可能同时读取和写入同一个文件,因为您会在尝试读取内容的同时覆盖内容。写入不同的文件,然后将其重命名为原始文件。
var read = file.createReadStream('anything'),
write = file.createWriteStream('anything-writeTo');
gm(read)
.crop(100,100,10,10)
.stream()
.on('error',function(err){ console.warn(err); })
.pipe(write, function (error) {
if (error) console.log(error);
else console.log('ok');
})
.on('end',function(){
file.rename("anything-writeTo", "anything", function (err) {
if (err) console.error(err);
else console.log('rename complete');
});
})