【问题标题】:Determine image dimensions for image stored in GridFS from meteor从流星确定存储在 GridFS 中的图像的图像尺寸
【发布时间】:2014-02-17 06:05:45
【问题描述】:

我正在尝试确定在流星上存储在 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。

图像 url 的控制台日志显示

/cfs/images/i5mSRED6mYgo2vK84_default1.jpg 

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

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

我已经尝试从 html 中(没有任何乐趣)和其他助手那里获得这个大小,但到目前为止没有任何效果。

谁能指出我在这里做错了什么,或者,建议另一种方法?

【问题讨论】:

  • 这似乎不是核心流星,除非我遗漏了什么。也许提供有关您的 imageFS 定义的更多信息。无论如何,解决方案将是做这个服务器端,而不是任何客户端代码。
  • 我首先猜测 imagemagick 仅在服务器上可用?无论如何,我建议的解决方案是,在 JS 中将图像加载到背景中,然后获取其尺寸,然后创建模态。
  • Neil:这里使用的包是meteorite的meteor-imagemagick和gridfs。 D 先生,您将如何在后台执行此操作?我不知道从哪里开始。

标签: javascript node.js mongodb meteor gridfs


【解决方案1】:

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

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

查看这两个解释所有相关部分的方法:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2019-01-18
    • 2016-04-16
    • 2012-02-06
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多