我将图像存储在 Grid/FS 上,为了改进 UI,我想调整所有图像的大小以适应特定尺寸(拉伸和挤压效果超出范围)。目前,图像使用以下方式返回...
FileProvider.prototype.streamFile = function(res, _id, contenttype){
var properId = this.db.bson_serializer.ObjectID.createFromHexString(_id)
res.contentType(contenttype)
var readstream = gfs.createReadStream(properId, {
"content_type": contenttype,
"id":true,
"metadata":{
"author": "Jackie"
},
"chunk_size": 1024*4 })
readstream.pipe(res)
}
这很好用,但现在我想截取图像并调整它的大小,所以我的想法是在内存中流式传输它而不是使用imagemagik进行调整大小(如果有更好的方法,请随时告诉我)。
但是,以下代码无法加载图像...
FileProvider.prototype.streamFile = function(res, _id, contenttype){
var properId = this.db.bson_serializer.ObjectID.createFromHexString(_id)
res.contentType(contenttype);
var readstream = gfs.createReadStream(properId, {
"content_type": contenttype,
"id":true,
"metadata":{
"author": "Jackie"
},
"chunk_size": 1024*4 });
var writestream = new stream.Stream()
writestream.writeable = true
writestream.write = function(data){
console.log("Streaming.."+data)
}
writestream.pipe = function(src){
console.log("Piping:"+src)
}
writestream.end = function (data){
console.log(JSON.stringify(data))
console.log("Completed")
}
readstream.pipe(writestream)
}
这会将以下内容输出到控制台...
不明确的
完全的
换句话说,没有数据被写入 writeStream。谁能看到我做错了什么?