731 Stimmen

Wie kann man die Bildgröße (Höhe und Breite) mit JavaScript ermitteln?

Gibt es irgendwelche JavaScript- oder jQuery-APIs oder Methoden, um die Abmessungen eines Bildes auf der Seite zu ermitteln?

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 y imgElement.naturalHeight um Breite und Höhe zu erhalten.

65voto

Ian Suttle Punkte 3344

Mit JQuery können Sie dies tun:

var imgWidth = $("#imgIDWhatever").width();

67 Stimmen

Und wenn das Bild noch nicht geladen wurde?

27voto

Thinker Punkte 13632

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.

11 Stimmen

Wenn du einen aktualisierten Code postest, wirst du vielleicht hochgevotet und bekommst sogar ein begehrtes Umkehrungsabzeichen!

20voto

Lee Hesselden Punkte 784

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';

2 Stimmen

In Jquery, können Sie $.proxy für diese verwenden.

19voto

Neurotransmitter Punkte 5406

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>

0 Stimmen

Danke für diesen Code, aber es gibt 0 für Breite und Höhe in Firefox für SVG-Bilder ohne definierte Breite und Höhe Attribute (z. B. diejenigen mit nur viewBox gesetzt).

0 Stimmen

@Crashalot richtig, dies ist nicht für Vektorbilder, dies funktioniert nur für Rasterbilder.

12voto

sundeep sharma Punkte 294

Um die natürliche Höhe und Breite zu erhalten:

document.querySelector("img").naturalHeight;
document.querySelector("img").naturalWidth;

<img src="img.png">

Und wenn Sie Höhe und Breite des Stils erhalten möchten:

document.querySelector("img").offsetHeight;
document.querySelector("img").offsetWidth;

CodeJaeger.com

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.

Powered by:

X