проверка размера изображения перед загрузкой - PullRequest
3 голосов
/ 11 марта 2011

Я заметил при загрузке фотографии профиля в Twitter, что ее размер проверяется перед загрузкой. Может кто-нибудь указать мне на решение, как это?

Спасибо

Ответы [ 5 ]

2 голосов
/ 30 июня 2012

Я проверил этот код в 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 голосов
/ 11 марта 2011

Если вы проверяете размер файла, вы можете использовать что-то вроде uploadify , чтобы проверить размер файла перед загрузкой.

Проверка фактических размеров файла (высота / ширина) может потребоваться на сервере.

1 голос
/ 11 марта 2011

Я думаю, что это невозможно, если вы не используете вспышку. Вы можете использовать uploadify или swfupload для таких вещей.

0 голосов
/ 17 февраля 2016

Вам нужно проверить ширину и высоту изображения при загрузке изображения.

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;
    }
}
0 голосов
/ 28 сентября 2012

Примерно так должно справляться с асинхронно загруженными формами, входами с или без «множественных» наборов и избегать условий гонки, которые возникают при использовании 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...