이번에는 캔버스를 사용하여 이미지를 압축하는 방법을 보여드리겠습니다. Canvas를 사용하여 이미지를 압축할 때 주의사항은 무엇인가요? 다음은 실제 사례입니다. 살펴보겠습니다.
1. 로컬 이미지 입력
1. 로컬 파일 얻기
<!--HTML--> <input type="file" id="choose-img" />
// JS var chooseImg = document.getElementById("choose-img"); chooseImg.onchange = function(e){ var file = this.files[0]; // …… (省略部分代码后续依次展示,下同) };
는 매우 간단합니다. 파일 유형 버튼을 통해 로컬 파일을 얻으면 됩니다.
2. 획득한 로컬 파일 유형 확인
<!--HTML--> <div id="result"></div>
// JS var result = document.getElementById("result"); // 用于显示图片输出结果,或者错误提示 if(/image/.test(file.type)){ // 判断文件类型是否为图片 // …… } else{ result.innerHTML = '<span style="color: red;">文件类型有误!</span>'; }
3. 획득한 로컬 이미지를 base64 형식으로 출력합니다.
var img = new Image(), // 创建图片对象,用于放置原始图片 reader = new FileReader(); reader.readAsDataURL(file); // 以base64格式读取并存入FileReader对象的result属性中 reader.onload = function(){ img.src = this.result; // 将图片base64字符串直接赋予Image对象的src中 document.body.insertBefore(img,chooseImg); // 将输出的图片插入到文件按钮之前 img.onload = function(){ // …… }; };
2. 캔버스 캔버스에 이미지를 그립니다
var canvas = document.createElement('canvas'); canvas.width = img.clientWidth; canvas.height = img.clientHeight; var context = canvas.getContext('2d');
: 캔버스의 크기는 입력 이미지의 너비, 높이와 동일합니다.
2. 그림 그리기
context.drawImage(img,0,0,canvas.width,canvas.height);
3. 그림 압축 및 출력
<!--HTML--> 图片压缩比率 : <input id="rate" type="number" min="0" max="100" /> % // JS var chooseImg = document.getElementById("choose-img"), result = document.getElementById("result"); chooseImg.onchange = function(e){ var file = this.files[0]; if(/image/.test(file.type)){ var img = new Image(), reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(){ img.src = this.result; document.body.insertBefore(img,chooseImg); img.onload = function(){ var canvas = document.createElement('canvas'); canvas.width = img.clientWidth; canvas.height = img.clientHeight; var context = canvas.getContext('2d'); context.drawImage(img,0,0,canvas.width,canvas.height); var rate = document.getElementById("rate").value || 100; var imgUrl = canvas.toDataURL(file.type,rate/100); result.innerHTML = '压缩后:<img src="'+ imgUrl +'" />'; result.style.display = 'block'; img.style.display = 'none'; }; }; } else{ result.innerHTML = '<span style="color: red;">文件类型有误!</span>'; } };
테스트 결과, Canvas를 통해 JPEG 형식의 그림을 압축하는 것이 가장 좋은 효과가 있는 반면 PNG 압축 효과는 명확하지 않으며 때로는 더 커지는 것으로 나타났습니다.
이 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
관련 읽기:
H5 블록 수준 태그 요약H5의 고급 인라인 태그H5를 사용하여 카메라를 호출하는 방법위 내용은 Canvas로 이미지를 압축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!