上传前检查图像大小

时间:2011-03-11 08:11:33

标签: javascript image-processing

我注意到在将个人资料图片上传到Twitter时,会在上传前检查其大小。有人能指出我这样的解决方案吗?

由于

6 个答案:

答案 0 :(得分:2)

如果您正在检查文件大小,则可以使用uploadify之类的内容在上传前检查文件大小。

可能需要在服务器上检查实际文件尺寸(高度/宽度)。

答案 1 :(得分:2)

我已经在chrome中测试了这段代码并且工作正常。

var x = document.getElementById('APP_LOGO'); // get the file input element in your form
var f = x.files.item(0); // get only the first file from the list of files
var filesize = f.size;
alert("the size of the image is : "+filesize+" bytes");

var i = new Image();
var reader = new FileReader();
reader.readAsDataURL(f);
i.src=reader.result;
var imageWidth = i.width;
var imageHeight = i.height;
alert("the width of the image is : "+imageWidth);
alert("the height of the image is : "+imageHeight);

答案 2 :(得分:1)

我认为除非你使用闪光灯,否则这是不可能的。您可以使用uploadifyswfupload来处理此类事情。

答案 3 :(得分:0)

这样的事情应该处理异步加载的表单,带或不带“多个”设置的输入,并避免使用FileReader.readAsDataURL和Image.src时发生的竞争条件。

$('#formContainer').on('change', '#inputFileUpload', function(event) {
  var file, _fn, _i, _len, _ref;
  _ref = event.target.files;
  _fn = function(file) {
    var reader = new FileReader();
    reader.onload = (function(f) {
      return function() {
        var i = new Image();
        i.onload = (function(e) {
          var height, width;
          width = e.target.width;
          height = e.target.height;
          return doSomethingWith(width, height);
        });
        return i.src = reader.result;
      };
    })(file);
    return reader.readAsDataURL(file);
  };
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
    file = _ref[_i];
    _fn(file);
  }
});

注意:需要jQuery,HTML5,挂钩到如下结构:

<div id="formContainer">
  <form ...>
  ...
    <input type="file" id="inputFileUpload"></input>
  ...
  </form>
</div>

答案 4 :(得分:0)

图像上载时需要检查图像宽度和高度。

var img = new Image;
img.src = URL.createObjectURL(file);
img.onload = function() {
    var picWidth = this.width;
    var picHeight = this.height;

    if (Number(picWidth) > maxwidth || Number(picHeight) > maxheight) {
        alert("Maximum dimension of the image to be 1024px by 768px");
        return false;
    }
}

答案 5 :(得分:0)

这对我来说很完美

$ git config user.email email@example.com

对原始创建者表示敬意:http://jsfiddle.net/4N6D9/1/

我对此进行了修改,以指定上传的最小宽度和高度。