本地通过input上传的jpg文件,查看文件的size width height; size:50k,通过file对象获取;width,height通过给img标签增加src地址(1.jpg 2data url 3blob长期地址)获取img对象的属性
参考相干文档:
区别 URL.createObjectURL() 和 FileReader.readAsDataURL()
https://blog.csdn.net/qq_3667...
辨别 file对象和blob对象和blob长期地址
src地址(1.jpg 2data url 3blob长期地址)能够赋值三个格局的值
第一段代码控制台输入:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>https://blog.csdn.net/qq_3667...</title>
</head>
<body>
<input type="file" name="" id="file">
<img src="" id="img">
<script type="text/javascript">
window.onload = function () { let $img = document.getElementById('img') file.onchange = function (e) { console.log('file对象', e.target.files[0]) let file = e.target.files[0] // 返回file对象 let fileUrl = window.URL.createObjectURL(file) // 内存中生成一个长期的链接 console.log('fileUrl内存生成长期地址', fileUrl) $img.src = fileUrl img.onload = function () { console.dir($img) console.log(fileUrl, $img.width, $img.height); // 手动回收 URL.revokeObjectURL(fileUrl) //用完当前手动发出 } }}
</script>
<script type="text/javascript">
window.onload = function () { let $img = document.getElementById('img') file.onchange = function (e) { console.log(e.target.files[0]) let file = e.target.files[0] const fr = new FileReader(file) // 会返回一个data: URL格局的字符串以示意所读取文件的内容 fr.readAsDataURL(file) console.log('fr.readAsDataURL(file)', fr.result) fr.onload = function () { console.dir($img); $img.src = this.result } }}
</script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script>
// Base64 to Blob function dataURLtoBlob(dataUrl) { var arr = dataUrl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime });}function getBase64Image(img) { var canvas = document.createElement("canvas"); $("canvas").hide(); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, img.width, img.height); var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase(); var dataURL = canvas.toDataURL("image/" + ext); // 会返回一个data: URL格局的字符串以示意所读取文件的内容 console.log('dataURL', dataURL) let bb = dataURLtoBlob(dataURL); console.log('bb', bb); return dataURL;}var imgLink = "https://pic1.zhimg.com/80/v2-2b9a444aa9af5f3e1ccb8e24518649ca_720w.jpg?source=1940ef5c";var tempImage = new Image();tempImage.src = imgLink;tempImage.crossOrigin = "*";tempImage.onload = function () { var base64 = getBase64Image(tempImage); console.log(base64); $("#resultImg").attr("src", base64);}
</script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script>
function getBase64Image(img) { var canvas = document.createElement("canvas"); $("canvas").hide(); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, img.width, img.height); var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase(); // var dataURL = canvas.toDataURL("image/" + ext); // 会返回一个data: URL格局的字符串以示意所读取文件的内容 canvas.toBlob(function (blobObj) { console.log('blobObj', blobObj) // 返回blob 对象 let imgSrc = window.URL.createObjectURL(blobObj) document.getElementById('img').src = imgSrc }) return dataURL;}var imgLink = "https://pic1.zhimg.com/80/v2-2b9a444aa9af5f3e1ccb8e24518649ca_720w.jpg?source=1940ef5c";var tempImage = new Image();tempImage.src = imgLink;tempImage.crossOrigin = "*";tempImage.onload = function () { var base64 = getBase64Image(tempImage); console.log(base64); $("#resultImg").attr("src", base64);}
</script>
</body>
</html>