javascriptimagecoffeescript

How to get file size of newly created Image() if src is base64 string?


How can I get the size of the newly created new Image() in bytes if this image's src is base64 data image?

I have such coffeescript code:

# This string is received after some original image preprocessing
base64String = "data:image/jpeg;base64......"

newImageObj = new Image()
newImageObj.src = base64String
newImageObj.onload = ->
  console.log "Resized image width is " + this.width
  console.log "New file size in bytes is " + newImageObj.fileSize

The output is always like this:

Resized image width is 500
New file size in bytes is undefined

This newImageObj.fileSize is always undefined.


Solution

  • Here is the algorithm to find file size from base64 string:

    base64String = "data:image/jpeg;base64......";
    
    var stringLength = base64String.length - 'data:image/png;base64,'.length;
    
    var sizeInBytes = 4 * Math.ceil((stringLength / 3))*0.5624896334383812;
    var sizeInKb=sizeInBytes/1000;