JSFiddle - React, Tailwind, and code Playground

by avrelian

JavaScript

// Определение размеров PNG-картинки без ее полной загрузки

function getPngDimensions(bytes) {
    var ihdr = bytes.split(' 49 48 44 52 ')[1].split(' ');
    return {
        width: parseInt(ihdr[0] + ihdr[1] + ihdr[2] + ihdr[3], 16),
        height: parseInt(ihdr[4] + ihdr[5] + ihdr[6] + ihdr[7], 16)
    };
}

function toBytes(str) {
    var bytes = '';
    for(var i = 0, ii = str.length; i < ii; ++i) {
        var byte = str.charCodeAt(i).toString(16);
        bytes += (byte.length == 1 ? ' 0' : ' ') + byte;
    }
    return bytes;
}

/* */
$.ajax({
  url: 'http://habrahabr.ru/images/share.icons.png',
  headers: {Range: "bytes=0-29"},
  success: function(data) {
      console.log(getPngDimensions(toBytes(data))); 
  }
});
/* */