从流星确定GridFS中存储的图像的图像尺寸

时间:2014-02-17 06:05:46

标签: javascript node.js mongodb meteor gridfs

我正在尝试确定在流星上存储在GridFS中的图像的宽度,以便我可以重新调整模态对话框的大小。

我有一个模板帮手

Template.projectImageModalInner.image = function() {
    var imageId = Session.get("selectedImageId");
    //console.log("projectImageModalInner imageId: " +imageId);
  var image = imageFS.findOne({_id: imageId});
  url = image.fileHandler.default1.url;
  console.log(url);
    console.log(Imagemagick.identify(url));
  return imageFS.findOne({_id: imageId});
}

将正确的图像返回到要显示的对话框,但我确实遇到了大小问题。对Imagemagick.identify的调用会出现错误,上面写着“无法在未定义时调用方法识别”,但上面的行会打印出正确的URL。

图片网址的控制台日志显示

/cfs/images/i5mSRED6mYgo2vK84_default1.jpg 

这是模板中显示的图像的正确URL。

我想最终使用图像宽度设置会话变量,以便可以动态调整对话框的大小。

我已经尝试从html(没有欢乐),从其他助手获得这个大小,但到目前为止没有任何工作。

任何人都可以指出我在这里做错了什么,或者,建议另一种方式?

1 个答案:

答案 0 :(得分:2)

我认为你必须在上传后使用服务器端的graphicsmagick / imagemagick库来获取图像大小。

首先,使用服务器集合上的transformWrite函数获取gm.size()的图像尺寸,然后将这些值附加到fileObj.metadata。

检查这两个方法如何解释所有相关部分: