Mam tylko adres URL do obrazu. Muszę określić wysokość i szerokość tego obrazu, używając tylko JavaScript. Obraz nie może być widoczny dla użytkownika na stronie. Jak mogę uzyskać jego wymiary?
javascript
html
image
JQueeeer
źródło
źródło
Odpowiedzi:
var img = new Image(); img.onload = function(){ var height = img.height; var width = img.width; // code here to use the dimensions } img.src = url;
źródło
onload
przed ustawieniem adresu URL obrazu?onload
jest odbiornikiem, który będzie wywoływany asynchronicznie, jeśli obraz zostanie poprawnie załadowany. Jeśli ustawisz odbiornik po ustawieniu adresu URL, obraz może zostać załadowany tuż przed tym, jak kod osiągnie ustawienie samego ładowania, co spowoduje, że odbiornik nigdy nie zostanie wywołany. Posługując się analogiami, jeśli podajesz sobie szklankę z wodą, czy najpierw nalewasz wodę, a następnie stawiasz szklankę, aby ją napełnić? A może najpierw stawiasz szklankę, a potem wlewasz wodę?Zrób nowy
Image
var img = new Image();
Ustaw
src
Pobierz
width
iheight
//img.width //img.height
źródło
Używa funkcji i czeka na jej zakończenie.
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); });
źródło
naturalWidth i 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%; }
źródło
Uzyskaj rozmiar obrazu dzięki jQuery
function getMeta(url){ $("<img/>",{ load : function(){ alert(this.width+' '+this.height); }, src : url }); }
Uzyskaj rozmiar obrazu za pomocą JavaScript
function getMeta(url){ var img = new Image(); img.onload = function(){ alert( this.width+' '+ this.height ); }; img.src = url; }
Uzyskaj rozmiar obrazu za pomocą JavaScript (nowoczesne przeglądarki, IE9 +)
function getMeta(url){ var img = new Image(); img.addEventListener("load", function(){ alert( this.naturalWidth +' '+ this.naturalHeight ); }); img.src = url; }
Użyj powyższego po prostu jako: getMeta (" http://example.com/img.jpg ");
https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement
źródło
Podobne pytanie zadane i udzielone przy użyciu JQuery tutaj:
Uzyskaj wysokość szerokości zdalnego obrazu z adresu URL
function getMeta(url){ $("<img/>").attr("src", url).load(function(){ s = {w:this.width, h:this.height}; alert(s.w+' '+s.h); }); } getMeta("http://page.com/img.jpg");
źródło
jeśli masz plik obrazu z formularza wejściowego. możesz używać w ten sposób
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); }
źródło
Poniższy kod dodaje wysokość i szerokość atrybutu obrazu do każdego obrazu na stronie.
<!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>
źródło