Как получить высоту внешнего / стороннего изображения?

0

Можно ли получить высоту внешнего изображения с помощью Javascript?

  • 2
    без предварительной загрузки?
  • 0
    Вы должны полностью загрузить изображение в DOM, прежде чем сможете измерить его размеры.
Показать ещё 1 комментарий
Теги:

4 ответа

4
Лучший ответ

Вы можете сделать предварительную загрузку изображения и найти его как

var img = document.createElement('img');
img.onload = function () {
    console.log(this.height, this.width)
}
img.src = '//placehold.it/64X45'

Демо: скрипка

  • 0
    Fiddle не работает, потому что jsfiddle обрабатывает console.log некоторым причудливым способом. Лучше использовать alert там.
4

не может сделать это без загрузки изображения. вы можете использовать объект Image javascript для этого:

var image = new Image();
image.onload = function(e) {
    alert('Height : ' +e.currentTarget.naturalHeight + ' width:'+e.currentTarget.naturalWidth);
};
image.src = 'link goes here'; 

DEMO

1

Нет, это невозможно из коробки. Это даст вам только тип mime и длину контента. Вы должны загрузить изображение, чтобы узнать его ширину и высоту пикселя.

В качестве альтернативы вы можете программно добавлять размеры в заголовок ответа (если у вас есть доступ), который затем можно использовать командой http "HEAD", чтобы просто вернуть заголовки.

  • 0
    Хотя то, что вы говорите, правда, вы не показываете, как делать то, что вы предлагаете. Я не удивлюсь, если за этот ответ проголосуют.
1

Возможно, это возможно сделать с помощью 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 файлах нет встроенных эскизов, вы должны быть в безопасности, чтобы установить только первые несколько КБ или около того.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню