ฉันมี img base64 เข้ารหัสที่คุณสามารถหาที่นี่ ฉันจะรับความสูงและความกว้างของมันได้อย่างไร?
คำตอบ:
var i = new Image();
i.onload = function(){
alert( i.width+", "+i.height );
};
i.src = imageData;
สำหรับการใช้งานแบบซิงโครนัสเพียงแค่รวมไว้ในสัญญาเช่นนี้:
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
})
}
จากนั้นคุณสามารถใช้การรอเพื่อรับข้อมูลในรูปแบบการเข้ารหัสแบบซิงโครนัส:
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
ภาพไม่ได้ถูกสร้างขึ้นในตอนแรกถูกซ่อนไว้ มันถูกสร้างขึ้นจากนั้นคุณจะได้รับความกว้างและความสูงจากนั้นจึงลบออก ซึ่งอาจทำให้การมองเห็นสั้นมากในรูปภาพขนาดใหญ่ในกรณีนี้คุณต้องห่อรูปภาพไว้ในคอนเทนเนอร์อื่นและทำให้คอนเทนเนอร์นั้นซ่อนไม่ใช่รูปภาพนั้นเอง
Fiddle อื่นที่ไม่ได้เพิ่มลงใน dom ตามคำตอบของ gp: ที่ นี่