이 글은 js가 업로드한 이미지의 압축에 대해 소개합니다. 이는 특정 참고 가치가 있어 도움이 필요한 친구들이 참고할 수 있습니다.
사용된 기술:
호환성: #🎜🎜 ##🎜 🎜#
h5没发现问题,pc低版本浏览器不支持
파일 도메인의 업로드를 모니터링하고 FileReader API를 통해 이미지를 가져옵니다. 원본 데이터
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <input type="file" id="file"> <canvas id="canvas"></canvas> </body> </html> <script> // 兼容性 h5上可以使用,pc低版本浏览器不支持 // 准备要用到的img和canvas var img = new Image(), canvas; // 创建读取文件对象 var render = new FileReader(); // 如果不需要放在页面上,使用js创建该元素就可以了 // canvas = document.createElement('canvas'); // 找到canvas,准备画图 var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); var input = document.getElementById('file'); input.addEventListener('change', function (e) { // 通过files获取到当前文件 var file = e.target.files[0]; // 如果选择的是图片 if (file.type.indexOf('image') != -1) { // 读取file文件,得到的结果为base64位 render.readAsDataURL(file); }; }); render.onload = function (result) { // 把读取到的base64图片设置给img的src属性 var src = render.result; img.src = src; }; img.onload = function () { // 加载完毕后获取图片的原始尺寸 var origin_width = this.width; var origin_height = this.height; // 设置最大允许宽高,根据需求自己设置,值越大,图片大小越大 var max_width = 400; var max_height = 400; // 最终宽高 var target_width = origin_width; var target_height = origin_height; if (origin_width > max_width || origin_height > max_height) { if (origin_width / origin_height > max_width / max_height) { // 更宽,按照宽度限定尺寸 target_width = max_width; target_height = Math.round(max_width * (origin_height / origin_width)); } else { target_height = max_height; target_width = Math.round(max_height * (origin_width / origin_height)); } } canvas.width = target_width; canvas.height = target_height; // 绘画到画布上 context.drawImage(img, 0, 0, target_width, target_height); /* 此处得到的是blob对象,blob对象是在ie10及以上才兼容,在ios8_1_1上和iphoneSE上有兼容问题 canvas.toBlob(function(result) { console.log(result); }); */ // 读取canvas的数据 var result = canvas.toDataURL(); // 得到的结果是base64位的字符串,拿到压缩后的值通过网络请求交给后台处理... // 如果是blob对象,需要通过FormData对象发送 console.log(result); }; </script>
js의 전체 문자열 배열에 대한 알고리즘 분석
# 🎜🎜#React의 사용: React 컴포넌트 내부의 상태 관리
위 내용은 js에서 이미지 업로드 및 압축 방법을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!