Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript FS.存储不可靠的gm图像转换_Javascript_Meteor_Imagemagick - Fatal编程技术网

Javascript FS.存储不可靠的gm图像转换

Javascript FS.存储不可靠的gm图像转换,javascript,meteor,imagemagick,Javascript,Meteor,Imagemagick,下面的代码大部分时间都能正常工作,但有时会生成零字节图像。我怀疑是流中缩放图像的部分。.sample(…)。谢谢你的帮助 function scaleToTargetByInt (width) { var maxWidth = 216 * 2; // 2x thumbnail size optimized for Retina display var originalWidth = width; var scaleInt = Math.floor(maxWidth/ori

下面的代码大部分时间都能正常工作,但有时会生成零字节图像。我怀疑是流中缩放图像的部分。
.sample(…)
。谢谢你的帮助

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);
    }
});

删除
var
关键字。 在更新时,我们应该从一些文档中传递
。\u id
,如果不是,mongo现在将如何上传哪个文档

试一试

fileObj.update({_id:this._id},{$set: {'metadata.width': size.width, 'metadata.height': size.height}});

代码应该是这样的

 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({_id:fileObj._id},{$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
,添加
{{u id:fileObj.\u id}
)并没有改善某些方面。使用原始代码我得到这个错误
W20150204-00:00:15.775(-8)?(标准)stream.js:94 W20150204-00:00:15.775(-8)?(标准)投掷器;//管道中存在未处理的流错误。
请执行此操作
console.log(fileObj)
我很确定fileObj是未定义的,这
W20150204-00:00:15.776(-8)?(STDERR)错误:enoint,打开“/Users/kai/eboydb/.meteor/local/cfs/files/_tempstore/MyPix-LEPFsPyjCs6H9Y5iy-0.chunk”
也可以尝试使用
$push
而不是
$set
我不明白,为什么有时候它会工作@埃桑
 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({_id:fileObj._id},{$set: {'metadata.width': size.width, 'metadata.height': size.height}});
            }
        }))
        // read metadata.width and scale acordingly
        .sample(scaleToTargetByInt(fileObj.metadata.width))
        .stream()
        .pipe(writeStream);
    }
});