const image = document.querySelector(...);// Get the original sizeconst naturalWidth = image.naturalWidth;const naturalHeight = image.naturalHeight;// Get the scaled sizeconst width = image.width;const height = image.height;
load
event to calculate the size of image which can be loaded via a given URL:const image = document.createElement('img');image.addEventListener('load', function (e) {// Get the sizeconst width = e.target.width;const height = e.target.height;});// Set the sourceimage.src = '/path/to/image.png';
Promise
to turn the snippet to a reusable function:const calculateSize = function (url) {return new Promise(function (resolve, reject) {const image = document.createElement('img');image.addEventListener('load', function (e) {resolve({width: e.target.width,height: e.target.height,});});image.addEventListener('error', function () {reject();});image.src = url;});};calculateSize('/path/to/image.png').then(function (data) {const width = data.width;const height = data.height;});
<input type="file" id="avatar" /><!-- Display the size --><div id="size" />
FileReader
:const avatarEle = document.getElementById('avatar');const sizeEle = document.getElementById('size');avatarEle.addEventListener('change', function (e) {// Get the selected fileconst file = e.target.files[0];const reader = new FileReader();reader.readAsDataURL(file);reader.addEventListener('loadend', function (e) {const src = e.target.result;calculateSize(src).then(function (data) {const width = data.width;const height = data.height;sizeEle.innerHTML = `${width} x ${height}`;});});});