자바 스크립트 : 이미지 크기 가져 오기


97

이미지에 대한 URL 만 있습니다. JavaScript 만 사용하여이 이미지의 높이와 너비를 결정해야합니다. 이미지는 페이지에서 사용자가 볼 수 없습니다. 치수를 어떻게 얻을 수 있습니까?



1
실제로이 대답 은 이미지가로드 될 때까지 기다려야하기 때문에 실제로 올바른 유일한 대답 입니다.
그림자 마법사가 당신을 위해 귀입니다

답변:


198
var img = new Image();

img.onload = function(){
  var height = img.height;
  var width = img.width;

  // code here to use the dimensions
}

img.src = url;

1
치수를 동 기적으로 얻을 필요가없는 경우. 이 경우 뷰포트 외부의 절대 위치를 사용하여 문서에 이미지를 삽입하면됩니다. 그러면 document.appendChild ()를 호출 한 직후 치수를 사용할 수 있습니다.
JustAndrei 2015-04-07

1
onload이미지의 URL을 설정하기 전에 왜 ?
Ajay Gaur

23
@AjayGaur onload는 이미지가 올바르게로드되면 비동기 적으로 호출되는 리스너 이기 때문 입니다. URL을 설정 한 후 리스너를 설정하면 코드가 onload 자체 설정에 도달하기 직전에 이미지가로드되어 리스너가 호출되지 않을 수 있습니다. 비유를 사용하여 유리 잔에 물을 제공하는 경우 먼저 물을 붓고 다음으로 유리 잔을 채워 물을 채우십니까? 아니면 먼저 유리 잔을 넣고 물을 붓나요?
biomorgoth

3
img.naturalWidth 및 img.naturalHeight은 정답
Kamlesh

1
@Kamlesh에게 감사드립니다. 나는 자연스러운 치수가 필요했습니다.
jahooma

43

새로 만들기 Image

var img = new Image();

설정 src

img.src = your_src

가져 오기 widthheight

//img.width
//img.height

17
이 정확한 코드를 사용하여 너비와 높이에 대해 0을 계속 얻습니다.
아담 케이시

11
이미지를로드해야하는 것 같습니다.
아담 케이시

3
추가 정보-이것은 처음에는 간헐적이었습니다. 문제는 이미지가 다운로드되지 않았기 때문이라고 생각합니다. 다음과 같이 onload 이벤트 핸들러에서 차원을 사용하는 코드를 실행하여 수정했습니다. img.onload = function () {};
Shumii

3
이 코드는 이미지가 브라우저 캐시에있는 한 작동합니다. 캐시가 유효하지 않거나 삭제되면. 작동하지 않습니다. 그래서 정말 신뢰할 수 없습니다.
bharatesh

2
이미지가 아직로드되지 않았기 때문에 작동하지 않습니다. 이미지로드는 비동기 적으로 수행되므로로드 이벤트를 기다려야합니다.
user1702401 apr

5

이것은 함수를 사용하고 완료 될 때까지 기다립니다.

http://jsfiddle.net/SN2t6/118/

function getMeta(url){
    var r = $.Deferred();

  $('<img/>').attr('src', url).load(function(){
     var s = {w:this.width, h:this.height};
     r.resolve(s)
  });
  return r;
}

getMeta("http://www.google.hr/images/srpr/logo3w.png").done(function(test){
    alert(test.w + ' ' + test.h);
});

1
지연자가있는이 재사용 가능한 함수가 왜 반대표를 받습니까?!
DavidDunham

'JavaScript 만 사용'하고 이것은 jQuery입니다.
Apolo

jQuerry를 사용하고 있지만 나로부터 upvote를 얻습니다. 접근 방식이 중요합니다.
krankuba 19.04.25

2

naturalWidth naturalHeight

var img = document.createElement("img");
img.onload = function (event)
{
    console.log("natural:", img.naturalWidth, img.naturalHeight);
    console.log("width,height:", img.width, img.height);
    console.log("offsetW,offsetH:", img.offsetWidth, img.offsetHeight);
}
img.src = "image.jpg";
document.body.appendChild(img);

// css for tests
img { width:50%;height:50%; }

1

입력 양식의 이미지 파일이있는 경우. 이렇게 사용할 수 있습니다

let images = new Image();
images.onload = () => {
 console.log("Image Size", images.width, images.height)
}
images.onerror = () => result(true);

let fileReader = new FileReader();
fileReader.onload = () => images.src = fileReader.result;
fileReader.onerror = () => result(false);
if (fileTarget) {
   fileReader.readAsDataURL(fileTarget);
}


0

jQuery로 이미지 크기 가져 오기

function getMeta(url){
    $("<img/>",{
        load : function(){
            alert(this.width+' '+this.height);
        },
        src  : url
    });
}

JavaScript로 이미지 크기 가져 오기

function getMeta(url){   
    var img = new Image();
    img.onload = function(){
        alert( this.width+' '+ this.height );
    };
    img.src = url;
}

JavaScript로 이미지 크기 가져 오기 (최신 브라우저, IE9 +)

function getMeta(url){   
    var img = new Image();
    img.addEventListener("load", function(){
        alert( this.naturalWidth +' '+ this.naturalHeight );
    });
    img.src = url;
}

위를 간단히 다음과 같이 사용하십시오. getMeta ( " http://example.com/img.jpg ");

https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement


-3

다음 코드 는 페이지의 각 이미지에 이미지 속성 높이너비 를 추가 합니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
function addImgAttributes()
{
    for( i=0; i < document.images.length; i++)
    { 
        width = document.images[i].width;
        height = document.images[i].height;
        window.document.images[i].setAttribute("width",width);
        window.document.images[i].setAttribute("height",height);

    }
}
</script>
</head>
<body onload="addImgAttributes();">
<img src="2_01.jpg"/>
<img src="2_01.jpg"/>
</body>
</html>

13
질문은 사용자에게 이미지를 표시하지 않고 이미지 크기를 얻는 것이 었습니다. 이미지가 표시된 후 이미지 너비 및 높이 속성을 설정하는 것은 전혀 의미가 없습니다.
Yaroslav Stavnichiy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.