Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

new Image(), how to know if image 100% loaded or not?

I'm creating new image using

img = new Image();
img.src = image_url;

Then I'm assigning img.src to the img tag's src in DOM

$("#my_img").attr("src", img.src);

How can I know that img.src has 100% loaded? What is the best practice? img.complete seem to me little buggy in some browsers.

So, in another words, I need to assign img.src to $("#my_img") only after img it was 100% loaded.

Thank you!

like image 759
Kirzilla Avatar asked Aug 18 '10 10:08

Kirzilla


People also ask

How do you check image is loaded or not in react?

forEach((image) => { image. addEventListener("load", () => updateStatus(imagesLoaded), { once: true }); image. addEventListener("error", () => updateStatus(imagesLoaded), { once: true }); }); return; }, [ref]); return status; };

How check image is loaded or not in jQuery?

To check if an image is loaded successful or not, you can combine the use of jQuery 'load()' and 'error()' event : $('#image1') . load(function(){ $('#result1'). text('Image is loaded!

What is image loaded?

The image is considered completely loaded if any of the following are true: Neither the src nor the srcset attribute is specified. The srcset attribute is absent and the src attribute, while specified, is the empty string ( "" ). The image resource has been fully fetched and has been queued for rendering/compositing.


2 Answers

Use the load event:

img = new Image();

img.onload = function(){
  // image  has been loaded
};

img.src = image_url;

Also have a look at:

  • Preloading and the JavaScript Image() object
like image 143
Sarfraz Avatar answered Oct 12 '22 22:10

Sarfraz


Using the Promise pattern:

function getImage(url){
        return new Promise(function(resolve, reject){
            var img = new Image()
            img.onload = function(){
                resolve(url)
            }
            img.onerror = function(){
                reject(url)
            }
            img.src = url
        })
    }

And when calling the function we can handle its response or error quite neatly.

getImage('imgUrl').then(function(successUrl){
    //do stufff
}).catch(function(errorUrl){
    //do stuff
})
like image 23
Watchmaker Avatar answered Oct 12 '22 22:10

Watchmaker