Javascript 如何在IMG html属性中获取图像的大小
我看到这段代码是为了获得图像的大小Javascript 如何在IMG html属性中获取图像的大小,javascript,jquery,html,Javascript,Jquery,Html,我看到这段代码是为了获得图像的大小(KB,MB)。但这段代码是在更改后从按钮获取数据的。这个代码能适用于我的问题吗?。或者是否有其他方法可以使用javascript直接获取图像的大小 $(函数(){ $(“#btnClick”).change(函数(e){ var a=e.target.files[0]; 警报(解析浮点(a.size/1024).toFixed(2)+“KB”); }); }); 从响应blob()没有直接的方法) .然后(blob=>{ 控制台日志(blob.size);
(KB,MB)
。但这段代码是在更改后从按钮获取数据的。这个代码能适用于我的问题吗?。或者是否有其他方法可以使用javascript直接获取图像的大小
$(函数(){
$(“#btnClick”).change(函数(e){
var a=e.target.files[0];
警报(解析浮点(a.size/1024).toFixed(2)+“KB”);
});
});代码>
从响应blob()没有直接的方法)
.然后(blob=>{
控制台日志(blob.size);
});
};代码>
从响应blob()没有直接的方法)
.然后(blob=>{
控制台日志(blob.size);
});
};代码>
通过传递url,您可以使用此函数获取任何文件的文件大小:
function get_filesize(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("HEAD", url, true); // Notice "HEAD" instead of "GET",
// to get only the header
xhr.onreadystatechange = function() {
if (this.readyState == this.DONE) {
callback(parseInt(xhr.getResponseHeader("Content-Length")));
}
};
xhr.send();
}
然后像这样使用它:
get_filesize("https://upload.wikimedia.org/wikipedia/commons/1/1e/Stonehenge.jpg", function(size) {
alert("The size of image is: " + size + " bytes.");
});
请在此处尝试:
通过传递url,您可以使用此函数获取任何文件的文件大小:
function get_filesize(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("HEAD", url, true); // Notice "HEAD" instead of "GET",
// to get only the header
xhr.onreadystatechange = function() {
if (this.readyState == this.DONE) {
callback(parseInt(xhr.getResponseHeader("Content-Length")));
}
};
xhr.send();
}
然后像这样使用它:
get_filesize("https://upload.wikimedia.org/wikipedia/commons/1/1e/Stonehenge.jpg", function(size) {
alert("The size of image is: " + size + " bytes.");
});
请在此处尝试:
你能更详细地说明你的问题吗?目前没有任何意义。:)你想显示已加载到
标记的图像的大小吗?你是说你有
并且想获得该图像文件的大小吗?@nnnnnn是的,你完全正确。也许你可以把你的问题说得更清楚些。我知道它在问题标题中,但在开始讨论文件输入之前,在问题正文中说出来。令人困惑的是,问题中显示的唯一HTML不包含
。跨来源问题可能可以通过[Cross origin XMLHttpRequest]解决(或者您可以更详细地说明您的问题吗?目前没有意义。:)你想显示已加载到
标记的图像的大小吗?你是说你有
并且想获得该图像文件的大小吗?@nnnnnn是的,你完全正确。也许你可以把你的问题说得更清楚些。我知道它在问题标题中,但在开始讨论文件输入之前,在问题正文中说出来。令人困惑的是,问题中显示的唯一HTML不包含
。跨源问题可以通过[Cross origin XMLHttpRequest]解决(或者如何使用此代码?。是否需要将其放入函数中?。@KiRa,这取决于您。在这里,我正在等待映像已加载资源,以便获取使用HTTP缓存,而不是向服务器发出新请求,但您可以按您的愿望执行。您甚至可以先获取此数据,然后将设置为URL.createObjectURL(blob)
。在这里冒昧地演示了@Kaido的答案。请记住,跨源XMLHttpRequest
类型不支持这一点。需要从服务器端允许它。有关结果,请参阅控制台:)@Kaido我试图将函数放入其中,但得到了一个error@KiRa,此错误是否有名称或小说明?请注意,您不必强制使用fetch API,您也可以对较旧的浏览器使用XHR,有一个responseType='blob'
参数。此答案中的代码只是一个广泛的概念证明,您必须编写自己的版本。但主要思想是,您不能直接从
标记执行此操作。我如何使用此代码?我是否需要将其放入函数中?@KiRa,这取决于您。我正在等待映像加载资源,以便提取使用HTTP缓存,而不是向服务器发出新请求,但您可以按照自己的意愿执行h、 您甚至可以先获取这些数据,然后将设置为URL.createObjectURL(blob)
。在这里随意演示了@kaido的答案。请记住,跨源XMLHttpRequest
类型不支持这一点。它需要从服务器
端允许。有关结果,请参阅控制台。:@kaido我尝试将其放入函数中,但得到了一个error@KiRa,此错误是否有名称或小说明?请注意,您不必强制使用fetch API,也可以对较旧的浏览器使用XHR,有一个responseType='blob'
参数。这个答案中的代码只是一个广泛的概念证明,您必须编写自己的版本。但主要的想法是,你不能直接从一个
标签上做这件事。与其给出负利率,不如去做一些研究!此函数返回正确的大小!对于文件,我们有两种不同的大小:大小和磁盘大小。此函数返回磁盘上的大小!阅读更多:你的答案非常好!我不知道为什么那个人投了你的反对票,但我只是投了你的反对票来纠正他/她的错误。祝你过得愉快^^与其给出负利率,不如去做些调查!此函数返回正确的大小!对于文件,我们有两种不同的大小:大小和磁盘大小。此函数返回磁盘上的大小!阅读更多:你的答案非常好!我不知道为什么那个人投了你的反对票,但我只是投了你的反对票来纠正他/她的错误。祝你今天愉快^^