Gibt es irgendwelche JavaScript- oder jQuery-APIs oder Methoden, um die Abmessungen eines Bildes auf der Seite zu ermitteln?
Und wenn das Bild noch nicht geladen wurde?
Gibt es irgendwelche JavaScript- oder jQuery-APIs oder Methoden, um die Abmessungen eines Bildes auf der Seite zu ermitteln?
Was alle anderen vergessen haben, ist, dass man die Bildgröße nicht überprüfen kann, bevor es geladen wird. Wenn der Autor alle geposteten Methoden überprüft, wird es wahrscheinlich nur auf localhost funktionieren. Da jQuery hier verwendet werden könnte, denken Sie daran, dass das 'ready'-Ereignis ausgelöst wird, bevor die Bilder geladen werden. $('#xxx').width() und .height() sollten im onload-Ereignis oder später abgefeuert werden.
Dies ist nur über einen Callback des load-Ereignisses möglich, da die Größe des Bildes erst bekannt ist, wenn es tatsächlich geladen wurde. Etwas wie der Code unten...
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';
Lassen Sie uns alles, was wir hier gelernt haben, in einer einfachen Funktion zusammenfassen ( imageDimensions()
). Sie verwendet verspricht .
// 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.</small>
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
18 Stimmen
Mit modernen Browsern ist das ganz einfach: davidwalsh.name/get-image-dimensions
5 Stimmen
Die meisten der folgenden Antworten beziehen sich nur auf die Breite und Höhe des Stils, nicht auf die tatsächliche Breite und Höhe des Bildes. verwenden
imgElement.naturalWidth
yimgElement.naturalHeight
um Breite und Höhe zu erhalten.