图像宽度高度通过AngularJS(ng-file-upload)

时间:2015-09-01 13:14:34

标签: javascript html angularjs ng-file-upload

我需要根据1:3的比例验证图像宽度 - 高度。我正在使用ng-file-upload来上传图片。验证需要在将其发送到服务器之前完成。

我对如何从所选图像获取图像宽度/高度一无所知。有人可以帮助我吗?

我正在关注本网站的教程: http://odetocode.com/blogs/scott/archive/2013/07/03/building-a-filereader-service-for-angularjs-the-service.aspx

3 个答案:

答案 0 :(得分:1)

这将是插件的功能请求。 作为一种解决方法,您可以这样做:

<div ngf-select ngf-model="image" ngf-validate-fn-async="validateRatio(image)" ngf-pattern="'image/*'" accept="image/*" >

$scope.validateRatio = function(image) {
  var defer = $q.defer();
  Upload.imageDimensions(image).then(function(d) {
    if (d.width / d.height === expectedRatio) {
      defer.resolve()
    } else {
      defer.reject();
    }
  }, function() {defer.reject();});
  return defer.promise;
}

<div ngf-select ngf-model="image" ngf-pattern="'image/*'" ngf-min-height="0" accept="image/*" >
<div ng-show="image.width && (image.width / image.height !== expectedRatio)">Invalid ratio?

修改 功能已添加 你可以

<div ngf-select ngf-model="image" ngf-ratio="1x3" ngf-pattern="'image/*'" accept="image/*" > 

答案 1 :(得分:0)

上传文件后,是否为DOM元素分配了ID?如果是这样,普通的JS可以工作如下:

var img = document.getElementById('imageid'); 

var width = img.clientWidth;
var height = img.clientHeight;

答案 2 :(得分:0)

    var image = angular.element('<CLASS_NAME or ID_NAME>');
    $scope.width = image.width();
    $scope.height = image.height();

希望这有助于你!