Можно ли получить высоту внешнего изображения с помощью Javascript?
Вы можете сделать предварительную загрузку изображения и найти его как
var img = document.createElement('img');
img.onload = function () {
console.log(this.height, this.width)
}
img.src = '//placehold.it/64X45'
Демо: скрипка
console.log
некоторым причудливым способом. Лучше использовать alert
там.
не может сделать это без загрузки изображения. вы можете использовать объект Image
javascript для этого:
var image = new Image();
image.onload = function(e) {
alert('Height : ' +e.currentTarget.naturalHeight + ' width:'+e.currentTarget.naturalWidth);
};
image.src = 'link goes here';
Нет, это невозможно из коробки. Это даст вам только тип mime и длину контента. Вы должны загрузить изображение, чтобы узнать его ширину и высоту пикселя.
В качестве альтернативы вы можете программно добавлять размеры в заголовок ответа (если у вас есть доступ), который затем можно использовать командой http "HEAD", чтобы просто вернуть заголовки.
Возможно, это возможно сделать с помощью ImageInfo - Javascript Image Meta Data reader:
http://blog.nihilogic.dk/2008/08/imageinfo-reading-image-metadata-with.html
(заголовок может быть извлечен, но зависит от типа файла tho в соответствии с описанием скрипта)
Демо здесь:
http://www.nihilogic.dk/labs/imageinfo/
Я не пробовал, но я помню, как смотрел на это и думал о подобном подходе. Он цитирует, что:
Поскольку информация заголовка обычно является лишь очень небольшой частью файла изображения, есть возможность запросить только количество байтов с начала файла. Установив
ImageInfo.useRanges = true
иImageInfo.range = <n>
, будут загружены только первые<n>
байты. Однако, поскольку положение информации заголовка в файлах JPEG не является фиксированным (ни один из них не является размером каких-либо EXIF-данных), это было оставлено как опция. Если вы не используете его в файлах JPEG или знаете, что в ваших JPEG файлах нет встроенных эскизов, вы должны быть в безопасности, чтобы установить только первые несколько КБ или около того.