【发布时间】:2013-07-20 10:35:41
【问题描述】:
我有一个 base64 img 编码,你可以找到 here。如何获取它的高度和宽度?
【问题讨论】:
-
这个问题的链接失效了
标签: javascript jquery image base64 dimensions
我有一个 base64 img 编码,你可以找到 here。如何获取它的高度和宽度?
【问题讨论】:
标签: javascript jquery image base64 dimensions
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
})
}
那么你可以使用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/
【讨论】:
object-fit调整大小之前的原图大小
使用该图像创建一个隐藏的<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. 的分析器添加到 dom 的小提琴: HERE
【讨论】: