Если не найдется решение «в лоб», то можно попробовать обходной маневр — запросить размеры картинки AJAX'ом. Для работы данного варианта нужно, чтобы сервер поддерживал «Range» заголовок в запросе (чтобы не загружать картинку два раза). А также, чтобы картинка была правильно сформирована (с правильными заголовками в файле).
Скажем, мы хотим узнать размеры какой-то картинки. Пусть она, для простоты, будет в формате PNG (узнать формат конкретной картинки можно через заголовки ответа). Для примера возмем картинку с данной страницы. Следующий код, вставленный в консоль, выдаст ее правильные размеры: 82 x 61.
function getPngDimensions(bytes) {
var ihdr = bytes.split(' 49 48 44 52 ')[1].split(' ');
return {
width: parseInt(ihdr[0] + ihdr[1] + ihdr[2] + ihdr[3], 16),
height: parseInt(ihdr[4] + ihdr[5] + ihdr[6] + ihdr[7], 16)
};
}
function toBytes(str) {
var bytes = '';
for(var i = 0, ii = str.length; i < ii; ++i) {
var byte = str.charCodeAt(i).toString(16);
bytes += (byte.length == 1 ? ' 0' : ' ') + byte;
}
return bytes;
}
$.ajax({
url: 'http://habrahabr.ru/images/share.icons.png',
headers: {Range: "bytes=0-29"},
success: function(data) {
console.log(getPngDimensions(toBytes(data)));
}
});
Иными словами, получаем первые 29 байт (для PNG-картинки этого хватит). Переводим в hex-строку. Находим
IHDR-заголовок. Получаем ширину и высоту.