【发布时间】:2021-03-17 18:14:43
【问题描述】:
我正在尝试从 base64 获取图像的高度。这是我的代码,
let reader = new FileReader()
reader.readAsDataURL(file);
reader.onloadend = function() {
let img = document.createElement('img');
img.src = reader.result; //data:image/png;base64,...
console.log(img.height);
}
查看日志返回 0。
这样怎么获取图片的高度?
完整代码
function handleDrop(e) {
var dt = e.dataTransfer
var files = dt.files
handleFiles(files)
}
function handleFiles(files) {
files = [...files]
files.forEach(previewFile)
}
function previewFile(file) {
let reader = new FileReader()
reader.readAsDataURL(file);
reader.onload = function() {
let img = document.createElement('img');
let div = document.createElement('div');
img.src = reader.result;
div.appendChild(img);
document.getElementById('gallery').appendChild(div);
}
}
dropArea.addEventListener('drop', handleDrop, false)
【问题讨论】:
-
readAsDataURL比createObjectURL贵。 -
file到底是什么?它已经是 Base64 编码的文件,还是二进制文件? -
你需要使用
HTMLImageElement的load事件,而不是FileReader。 -
尝试更改为“load”事件而不是“onloadend”。进入这些可能重复的建议:-stackoverflow.com/a/26934286-stackoverflow.com/a/6150397
标签: javascript