Как получить размер изображения перед загрузкой в ​​jQuery? - PullRequest
0 голосов
/ 03 декабря 2011

Я использую jQuery + AJAX для загрузки изображения, а затем генерирую HTML, чтобы показать его. После успешной загрузки изображения AJAX получает имя файла изображения. Я хочу получить размерное соотношение изображения перед его загрузкой. В противном случае, если я загружу изображение и использую .width() и .height(), он вернет 0, поскольку загрузка изображения займет некоторое время.

Есть ли в jQuery какая-либо функция, подобная getimagesize(filename) PHP?

* редактировать *

Извините за путаницу! Мне нужна функция в js, а не в PHP, и эта функция похожа на getimagesize(filename) в PHP.

* изменить еще раз *

Выкладываю упрощенный код здесь:

var html = '<img id="photo' +  id + '" src="' + filename + '" />';
$('#photos li:last').html(html);
var e = $('#photo' + id);
(e.width() / e.height() > 1.6) ? e.attr('width', 160): e.attr('height', 100);

Проблема здесь в том, что .width() и .height() оба равны 0. При использовании clientWidth и clientHeight они равны undefined.

Ответы [ 3 ]

5 голосов
/ 03 декабря 2011
var e = $('#photo' + id);
e.load(function() {
   (e.width() / e.height()) > 1.6 ? e.attr('width', 160): e.attr('height', 100);
});
2 голосов
/ 03 декабря 2011

Проверяли ли вы руководство по PHP перед тем, как задавать этот вопрос? В PHP есть функция, которая делает именно это, с точным названием, которое вы угадали:

http://php.net/manual/en/function.getimagesize.php

1 голос
/ 23 декабря 2011

почему бы не передать объект json из php-файла, который я предполагаю, что вы используете для загрузки изображения?например, статус (загружен, ошибка и т. д.), x (ширина), y (высота) и т. д.

, затем вы можете использовать его в обратном вызове ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...