JS - get image width and height from the base64 code

后端 未结 4 680
攒了一身酷
攒了一身酷 2020-11-27 14:46

I have a base64 img encoded that you can find here. How can I get the height and the width of it?

相关标签:
4条回答
  • 2020-11-27 15:29
    var i = new Image(); 
    
    i.onload = function(){
     alert( i.width+", "+i.height );
    };
    
    i.src = imageData; 
    
    0 讨论(0)
  • 2020-11-27 15:29

    Create a hidden <img> with that image and then use jquery .width() and . height()

    $("body").append("<img id='hiddenImage' src='"+imageData+"' />");
    var width = $('#hiddenImage').width();
    var height = $('#hiddenImage').height();
    $('#hiddenImage').remove();
    alert("width:"+width+" height:"+height);
    

    Test here: FIDDLE

    Image is not initially created hidden. it gets created, then you get width and height and then remove it. This may cause a very short visibility in large images in this case you have to wrap the image in another container and make that container hidden not the image itself.


    Another Fiddle that does not add to dom as per gp.'s anser : HERE

    0 讨论(0)
  • 2020-11-27 15:32

    For synchronous use just wrap it into a promise like this:

    function getImageDimensions(file) {
      return new Promise (function (resolved, rejected) {
        var i = new Image()
        i.onload = function(){
          resolved({w: i.width, h: i.height})
        };
        i.src = file
      })
    }
    

    then you can use await to get the data in synchronous coding style:

    var dimensions = await getImageDimensions(file)
    
    0 讨论(0)
  • 2020-11-27 15:35

    I found that using .naturalWidth and .naturalHeight had the best results.

    const img = new Image();
    
    img.src = 'https://via.placeholder.com/350x150';
    
    img.onload = function() {
      const imgWidth = img.naturalWidth;
      const imgHeight = img.naturalHeight;
    
      console.log('imgWidth: ', imgWidth);
      console.log('imgHeight: ', imgHeight);
    };
    

    Docs:

    • https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalWidth
    • https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/naturalHeight

    This is only supported in modern browsers. http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/

    0 讨论(0)
提交回复
热议问题