jquery - Hogyan lehet lekérdezni a kép méretét (magasság és szélesség) JavaScript használatával
Van JavaScript vagy jQuery API vagy módszer az oldal képének méreteinek lekérésére?
Válasz #1
A képet programozottan is lekérheti, és ellenőrizheti a méreteit JavaScript segítségével...
const img = new Image();
img.onload = function() {
alert(this.width + 'x' + this.height);
}
img.src = 'http://www.google.com/intl/en_ALL/images/logo.gif';Ez hasznos lehet, ha a kép nem része a jelölésnek.
Válasz #2
Továbbá (Rex és Ian válaszai mellett) van még:
imageElement.naturalHeight
és
imageElement.naturalWidth
Ezek az állomány magasságát és szélességét adják meg (nemcsak a képelemét).
Válasz #3
A clientWidth és a clientHeight DOM-tulajdonságok, amelyek a DOM elem belső méreteinek aktuális, böngészőben lévő méretét mutatják (kizárva a margót és a szegélyt). Tehát egy IMG elem esetében ez a látható kép tényleges méreteit adja meg.
var img = document.getElementById('imageid');
//or however you get a handle to the IMG
var width = img.clientWidth;
var height = img.clientHeight;
Válasz #4
Ha jQuery-t használsz és képméreteket kérsz le, várnod kell, amíg betöltődnek, különben csak nullákat kapsz.
$(document).ready(function() {
$("img").load(function() {
alert($(this).height());
alert($(this).width());
});
});
Válasz #5
Úgy gondolom, a clientWidth és a clientHeight használata most már elavult.
Végeztem néhány kísérletet az HTML5-tel, hogy lássam, mely értékek térnek vissza valójában.
Először is, használtam egy Dash nevű programot, hogy áttekintést kapjak a képfájl API-ról.
Azt állítja, hogy a height és a width a kép megjelenített magassága/szélessége, míg a naturalHeight és a naturalWidth a kép valódi magassága/szélessége (és csak HTML5-ben érhetők el).
Egy gyönyörű pillanatról készült képet használtam, egy 300 magas és 400 széles fájlból. És ez a JavaScript kód:
var img = document.getElementById("img1");
console.log(img.height, img.width);
console.log(img.naturalHeight, img.naturalWidth);
console.log($("#img1").height(), $("#img1").width());
Ezután ezt az HTML-t használtam, beágyazott CSS-sel a magasság és a szélesség beállításához.
<img style="height:120px;width:150px;" id="img1" src="img/Butterfly.jpg" />
Eredmények :
/* Image element */ height == 300 width == 400
naturalHeight == 300 naturalWidth == 400
/* jQuery */ height() == 120 width() == 150
/* Actual rendered size */ 120 150
Ezután az HTML-t a következőre változtattam:
<img height="90" width="115" id="img1" src="img/Butterfly.jpg" />
Azaz a magasság és szélesség attribútumok használata az inline stílusok helyett.
Eredmények :
/* Image element */ height == 90 width == 115
naturalHeight == 300 naturalWidth == 400
/* jQuery */ height() == 90 width() == 115
/* Actual rendered size */ 90 115
Ezután az HTML-t a következőre változtattam:
<img height="90" width="115" style="height:120px;width:150px;" id="img1" src="img/Butterfly.jpg" />
Azaz, mind az attribútumokat, mind a CSS-t használva, hogy lássuk, melyik érvényesül.
Eredmények :
/* Image element */ height == 90 width == 115
naturalHeight == 300 naturalWidth == 400
/* jQuery */ height() == 120 width() == 150
/* Actual rendered size */ 120 150
Válasz #6
jQuery használatával ezt csinálod:
var imgWidth = $("#imgIDWhatever").width();
Válasz #7
Ami mindenki másnak elfelejtődött, az az, hogy a képméretet nem lehet ellenőrizni, mielőtt betöltődik. Amikor a szerző az összes közzétett módszert ellenőrzi, valószínűleg csak a localhoston fog működni.
Mivel itt használható a jQuery, ne feledd, hogy a 'ready' esemény a képek betöltése előtt kerül kiváltásra. A $ ('#xxx').width() és a .height() hívást az onload eseményben vagy később kell végrehajtani.
Válasz #8
Foglaljuk össze mindazt, amit itt tanultunk, egy egyszerű függvénybe (imageDimensions()). Promise-okat használ.
// helper to get dimensions of an image
const imageDimensions = file =>
new Promise((resolve, reject) => {
const img = new Image()
// the following handler will fire after a successful loading of the image
img.onload = () => {
const { naturalWidth: width, naturalHeight: height } = img
resolve({ width, height })
}
// and this handler will fire if there was an error with the image (like if it's not really an image or a corrupted one)
img.onerror = () => {
reject('There was some problem with the image.')
}
img.src = URL.createObjectURL(file)
})
// here's how to use the helper
const getInfo = async ({ target: { files } }) => {
const [file] = files
try {
const dimensions = await imageDimensions(file)
console.info(dimensions)
} catch(error) {
console.error(error)
}
}<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.0.0-beta.3/babel.min.js"></script>
Select an image:
<input
type="file"
onchange="getInfo(event)"
/>
<br />
<small>It works offline.Válasz #9
Ezt igazából csak a betöltési esemény visszahívása segítségével lehet megtenni, mivel a kép mérete csak akkor ismert, amikor az ténylegesen befejeződött a betöltés. Valami olyasmi, mint az alábbi kód...
var imgTesting = new Image();
function CreateDelegate(contextObject, delegateMethod)
{
return function()
{
return delegateMethod.apply(contextObject, arguments);
}
}
function imgTesting_onload()
{
alert(this.width + " by " + this.height);
}
imgTesting.onload = CreateDelegate(imgTesting, imgTesting_onload);
imgTesting.src = 'yourimage.jpg';
Válasz #10
A természetes magasság és szélesség eléréséhez:
document.querySelector("img").naturalHeight;
document.querySelector("img").naturalWidth;<img src="img.png">És ha meg akarod kapni a stílus magasságát és szélességét:
document.querySelector("img").offsetHeight;
document.querySelector("img").offsetWidth;Válasz #11
Feltételezve, hogy meg akarjuk szerezni a <img id="an-img" src"..."> kép méreteit
// Query after all the elements on the page have loaded.
// Or, use `onload` on a particular element to check if it is loaded.
document.addEventListener('DOMContentLoaded', function () {
var el = document.getElementById("an-img");
console.log({
"naturalWidth": el.naturalWidth, // Only on HTMLImageElement
"naturalHeight": el.naturalHeight, // Only on HTMLImageElement
"offsetWidth": el.offsetWidth,
"offsetHeight": el.offsetHeight
});
})
Természetes dimenziók
el.naturalWidth és el.naturalHeight megadják nekünk a természetes méreteket, a kép fájl méreteit.
Elrendezés méretei
el.offsetWidth és el.offsetHeight meg fogja adni számunkra az elemet a dokumentumon kirajzolódó méreteit.
