MeteorJS获取图像宽度

时间:2016-12-05 18:50:27

标签: javascript node.js reactjs meteor

我正在使用" react-dropzone"为用户提供上传图像的方法。当用户提交时,我将图像保存在亚马逊S3云中。我需要测量图像宽度,但我已经尝试过imagemagick包和其他一些npm模块,我总是有一些问题,比如"找不到模块" fs""或"找不到模块' ../ lib / detector'(...)"。有什么建议吗?

    S3.upload({
            files:this.files,
            path:"tours/"+this.tourId
        },function(e,result){
         // Get Image width here
    });

2 个答案:

答案 0 :(得分:1)

fs模块仅在服务器上可用,imagemagick也是如此。因此,您需要将图像传递给流星服务器才能使用它们。

或者,AWS S3具有lambda函数(可以使用javascript),并且可以在上传文件时触发,因此您可以在那里进行检测。您可以将图像信息保存到AWS上的单独文本文件,然后使用HTTP GET请求检索该文件。唯一的问题是lambda函数是异步执行的,因此在请求文件之前需要等待一段时间。

AWS API Gateway允许您使用HTTP请求调用lambda函数,因此一旦文件上载完成,您的下一步操作就是执行lambda函数的HTTP GET。这将返回您所需的信息。

答案 1 :(得分:1)

每个file都应该有一个.preview属性(除非你设置disablePreview道具)。 file.preview是一个blob网址,您可以将其加载到Image()中以捕获其onload事件中的宽度和高度:

var image = new Image();
image.src = window.URL.createObjectURL(file.preview);
image.onload = function () {
  var width = image.width;
  var height = image.height;
  // TODO: Do something with the dimensions
};