web-dev-qa-db-ja.com

JS-base64コードから画像の幅と高さを取得

base64 img encodedを見つけることができます ここ 。どうすれば高さと幅を取得できますか?

77
bombastic
var i = new Image(); 

i.onload = function(){
 alert( i.width+", "+i.height );
};

i.src = imageData; 
127
gp.

同期使用の場合は、次のように約束にラップするだけです。

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
  })
}

次に、awaitを使用して、同期コーディングスタイルでデータを取得できます。

var dimensions = await getImageDimensions(file)
25
EscapeNetscape

.naturalWidthと.naturalHeightを使用すると、最良の結果が得られることがわかりました。

var img = new Image();

img.onload = function() {
    var imgWidth = img.naturalWidth,
        imgHeight = img.naturalHeight;
};

これは最新のブラウザでのみサポートされています。 http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/

5
Bill Keller

非表示の<img>その画像で、jquery .width()およびを使用します。高さ()

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

ここでテスト: [〜#〜] fiddle [〜#〜]

画像は最初は非表示では作成されません。作成された後、幅と高さを取得して削除します。この場合、大きな画像では非常に短い可視性が発生する可能性があります。この場合、画像を別のコンテナでラップし、そのコンテナを画像自体ではなく非表示にする必要があります。


別のFiddle gpのanserに従ってdomに追加しない: [〜#〜] here [〜#〜]

2
Desu