ここで見つけることができるbase64 imgエンコードがあります。どうすれば高さと幅を取得できますか?
回答:
var i = new Image();
i.onload = function(){
alert( i.width+", "+i.height );
};
i.src = imageData;
同期的に使用する場合は、次のようなpromiseにラップします。
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)
私はそれを使用.naturalWidth
し.naturalHeight
ていることを発見し、最良の結果を得ました。
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);
};
これは最新のブラウザでのみサポートされています。http://www.jacklmoore.com/notes/naturalwidth-and-naturalheight-in-ie/
<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
画像は最初は非表示に作成されていません。作成された後、幅と高さを取得して削除します。この場合、大きな画像では非常に短い可視性が生じる可能性があります。この場合、画像を別のコンテナにラップし、そのコンテナを画像自体ではなく非表示にする必要があります。
GPのanserに従ってdomに追加しない別のフィドル: ここ