JS-文件阅读器API获取图像文件大小和尺寸
JS - File Reader API get image file size and dimensions
嗨,我正在使用以下代码使用File Reader API获取上传图像:
<script type="text/javascript">
var loadImageFile = (function () {
if (window.FileReader) {
var oPreviewImg = null, oFReader = new window.FileReader(),
rFilter = /^(?:image'/bmp|image'/cis'-cod|image'/gif|image'/ief|image'/jpeg|image'/jpeg|image'/jpeg|image'/pipeg|image'/png|image'/svg'+xml|image'/tiff|image'/x'-cmu'-raster|image'/x'-cmx|image'/x'-icon|image'/x'-portable'-anymap|image'/x'-portable'-bitmap|image'/x'-portable'-graymap|image'/x'-portable'-pixmap|image'/x'-rgb|image'/x'-xbitmap|image'/x'-xpixmap|image'/x'-xwindowdump)$/i;
oFReader.onload = function (oFREvent) {
/*get image*/
var _img = oFREvent.target.result;
console.log(oFREvent.target);
/*add img to hidden input text*/
localStorage.photo = _img;
oPreviewImg.src = oFREvent.target.result;
};
return function () {
var aFiles = document.getElementById("imageInput").files;
if (aFiles.length === 0) { return; }
if (!rFilter.test(aFiles[0].type)) {
notify("You must select a valid image file!",3400,false); return;
}
oFReader.readAsDataURL(aFiles[0]);
}
}
})();
</script>
<form name="uploadForm">
<p><input id="imageInput" type="file" name="myPhoto" onchange="loadImageFile();" /><br />
<input type="submit" value="Send" /></p>
<input type="hidden" id="photo_1_hidden" name="photo_1"/>
</form>
它工作得很好,并且返回图像的base64数据。
现在我也想得到图像文件的大小以及图像的宽度和高度。
有可能吗?
我试着登录控制台的文件,但我找不到我要搜索的内容。
有人帮忙,非常感谢!
类似的东西?
var oPreviewImg = new Image();
oPreviewImg.onload = function(){
console.log(this.size);
alert("'" + this.name + "' is " + this.width + " by " + this.height + " pixels in size.");
return true;
};
oPreviewImg.onerror = function(){
alert("'" + this.name + "' failed to load.");
return true;
}
oPreviewImg.src = "//placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150";
var xhr = new XMLHttpRequest();
xhr.open('HEAD', oPreviewImg.src, true);
xhr.onreadystatechange = function() {
console.log('this', this);
if ( xhr.readyState == 4 ) {
if ( xhr.status == 200 ) {
alert('Size in bytes: ' + xhr.getResponseHeader('Content-Length'));
} else {
alert('ERROR');
}
}
};
xhr.send(null);
实时版本
更新使用Fiddle替换Live版本,但是,由于跨站点脚本问题,无法有效检索大小。
const reader = new FileReader()
reader.onload = (theFile) => {
const image = new Image()
image.src = theFile.target.result
image.onload = () => {
console.log('image width ===== ' + image.width + 'Image height
===== ' + image.height)
}
}
reader.readAsDataURL(item)
我不相信JS能够在不首先将图像渲染到视口的情况下获得这些数据。也就是说,我不熟悉任何可以按照JavaScript或JQuery库中的要求执行操作的方法。要获得这样的数据,最好的办法是以预览的方式将图像呈现到页面上,或者使用更强大的语言(如PHP),并使用Ajax请求来获得您想要的数据。
相关文章:
- 预编译的车把模板使文件大小加倍
- 具有相同大小图像的Javascript图像面板
- Node.js:在修改时确定文件大小
- 如何使用nodejs获取我网站上所有图像/ css / js的所有文件大小
- 压缩jpeg以达到指定目标图像文件大小的算法
- Canvas toDataUrl增加了图像的文件大小
- 使用ajax获取所有图像的文件大小,并维护额外的图像数据
- JS-文件阅读器API获取图像文件大小和尺寸
- 获取远程加载图像的url's文件大小
- 调整画布质量以达到预定的图像文件大小
- 如何减少图像文件大小而不失去质量或分辨率使用php或任何其他语言
- 如何在javascript中获取文件api图像大小
- 获取使用socket.io传输的图像文件大小
- 在jquery, ie8中获取图像文件's大小和尺寸错误
- 当从图像相册中选择图像时,无法读取文件大小
- 用JS确定图像404 /文件大小
- 在通过ajax方法上传图像之前,请检查Jquery中的文件大小和文件类型
- 图像尺寸和文件大小之间是否存在关系
- 上传到ASP.Net时控制图像文件大小
- 在IE中获取图像文件大小