JS-base64 코드에서 이미지 너비와 높이 가져 오기


답변:


151
var i = new Image(); 

i.onload = function(){
 alert( i.width+", "+i.height );
};

i.src = imageData; 

1
그냥 굉장합니다, 크기를 확인하는 데 반 시간이 걸립니다, 정말 감사합니다!
과격한

8
이것이 비동기 프로세스라는 것이 너무 나쁩니다.
Coen Damen

2
@CoenDamen 예. 동기식 프로세스도 필요합니다.
1.21 기가 와트

당신은 최고입니다
Valdrinium

13
나는 또한 여기서 순서가 매우 중요하다고 덧붙일 것입니다. 다른 방법으로 수행하면 (onload 전 src) 이벤트를 놓칠 수 있습니다. 참조 : stackoverflow.com/a/2342181/4826740
maxshuty 2017

33

동기식으로 사용하려면 다음과 같이 약속으로 감싸십시오.

function getImageDimensions(file) {
  return new Promise (function (resolved, rejected) {
    var i = new Image()
    i.onload = function(){
      resolved({w: i.width, h: i.height})
    };
    i.src = file
  })
}

그런 다음 await를 사용하여 동기식 코딩 스타일로 데이터를 가져올 수 있습니다.

var dimensions = await getImageDimensions(file)

1
그래도 여전히 비동기 적입니다. 통사론 적 설탕을 사용합니다.
gustavopch 19

'naturalWidth'와 'naturalHeight'가 더 나은 선택이 아닙니다. stackoverflow.com/questions/28167137/...
Crashalot

11

나는 그것을 사용 .naturalWidth하고 .naturalHeight최상의 결과를 얻었습니다.

const img = new Image();

img.src = 'https://via.placeholder.com/350x150';

img.onload = function() {
  const imgWidth = img.naturalWidth;
  const imgHeight = img.naturalHeight;

  console.log('imgWidth: ', imgWidth);
  console.log('imgHeight: ', imgHeight);
};

문서 :

이것은 최신 브라우저에서만 지원됩니다. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/


2

<img>해당 이미지 로 숨겨진 항목 을 만든 다음 jquery .width () 및. 신장()

$("body").append("<img id='hiddenImage' src='"+imageData+"' />");
var width = $('#hiddenImage').width();
var height = $('#hiddenImage').height();
$('#hiddenImage').remove();
alert("width:"+width+" height:"+height);

여기서 테스트 : FIDDLE

처음에는 숨겨진 이미지가 생성되지 않습니다. 생성되고 너비와 높이를 얻은 다음 제거합니다. 이로 인해 큰 이미지에서 매우 짧은 가시성이 발생할 수 있습니다.이 경우 이미지를 다른 컨테이너에 래핑하고 해당 컨테이너를 이미지 자체가 아닌 숨겨야합니다.


gp.의 anser에 따라 dom에 추가되지 않는 또 다른 Fiddle : HERE


var i = new Image (); i.src = imageData; setTimeout (function () {alert ( "width :"+ i.width + "height :"+ i.height);}, 100);
gp.

이것은 jsfiddle의 특성으로 인해 필요한 수정일뿐입니다. onLoad를 onDomReady로 변경하여 초기 0 너비 및 높이 문제를 수정할 수 있습니다. 코드는 문서가 이미로드 된 작업의 어딘가에서이 함수를 호출한다고 가정합니다.
Desu

요점은 너비와 높이를 얻기 위해 dom에 아무것도 추가 할 필요가 없다는 것입니다. 귀하의 제안을 반영하도록 답변을 수정합니다.
Desu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.