При распознавании удостоверения личности в проекте необходимо передать кодировку изображения в формате base64, но фотографии, сделанные мобильным телефоном, слишком велики, и конвертировать их в base64 просто ужасно, поэтому я нашел решение.
Задействованные очки знаний<!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 onchange=loadImg(this)> <hr> <div>800×449, 544 КБ</div> <img src= <hr> <div>400×224, 157 КБ</div> <canvas></canvas> <script> // Функция загрузки изображения loadImg(me) { let img = document.querySelector('img'); let cvs = document.querySelector('canvas'); let file = me.files[0]; // Получить объект файла // Сжимать загруженное изображение только в том случае, если его размер превышает 500 КБ if (file && (file.size / 1024 > 500)) { let reader = new FileReader(); .readAsDataURL(file); // Преобразовать в кодировку base64 read.onload = function (e) { let naturalBase64 = e.target.result; // Получить base64; Кодировка, это исходное изображение img.src = naturalBase64; img.onload = function () { letration = img.naturalWidth / img.naturalHeight; // Получаем исходное соотношение сторон изображения, чтобы сжать его в равном соотношении cvs. ширина = 400; cvs.height = cvs.width / соотношение let ctx = cvs.getContext('2d'); ctx.drawImage(img, 0, 0, cvs.width, cvs.height); // Рисуем на холсте // Base64 нового изображения после сжатия let zipBase64 = cvs.toDataURL(); </body></html>
визуализации
О размере сжатого изображенияВот готовый метод baseStr — это полная кодировка Base64, которая включает в себя.
база64
Код:
functioncalcBase(baseStr){ var tag = 'base64,'; baseStr = baseStr.substring(baseStr.indexOf(tag)+tag.length); var eqTagIndex = baseStr.indexOf('='); 1?baseStr.substring(0,eqTagIndex):baseStr; вар strLen = baseStr.length; var fileSize = strLen; - (strLen/8) * 2; console.log(размер файла: + (fileSize/1024).toFixed(1) + 'КБ');}
Выше приведено все содержание этой статьи. Я надеюсь, что она будет полезна для изучения всеми. Я также надеюсь, что все поддержат сеть VeVb Wulin.