캔버스 요소는 웹 페이지에 그래픽을 그리는 데 사용됩니다. HTML5의 캔버스 요소는 JavaScript를 사용하여 웹 페이지에 2D 이미지를 그립니다. 직사각형 영역의 캔버스에 JavaScript는 2D 그래픽을 그리고 이를 픽셀 단위로 렌더링합니다. 캔버스 요소는 경로, 직사각형, 원, 문자를 그리고 이미지를 추가하는 데 다양하게 사용될 수 있습니다. 이 기사에서는 캔버스 및 이미지 압축에 대한 샘플 코드를 공유합니다.
캔버스 이미지 압축 과정
다음으로 구체적인 예시를 들어 캔버스 이미지 압축의 구체적인 과정을 설명하겠습니다.
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--> <p id="result"></p>
// 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(){ // …… }; };
두 번째, 그림 그리기 in Canvas
1. 캔버스 만들기
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 rate = document.getElementById("rate").value || 100; // 输入图片压缩比率,默认为100% var imgUrl = canvas.toDataURL(file.type,rate/100); // 第一个参数为输出图片类型,第二个为压缩比 result.innerHTML = '压缩后:<img src="'+ imgUrl +'" />'; // 将压缩后的图片置于result中显示 img.style.display = 'none'; // 将原始图片隐藏
캔버스에 그린 그림이 또 base6 4 기반 형식 출력.
4. 완전한 코드 표시
<!--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 압축 효과는 명확하지 않으며 때로는 그럴 수도 있습니다. 더 커집니다.
위 내용은 Canvas 및 이미지 압축 샘플 코드인데, 모두에게 도움이 되었으면 좋겠습니다.
관련 권장 사항:
캔버스를 사용하여 공과 마우스 사이의 상호 작용을 구현하는 방법
캔버스를 사용하여 입자 분수 애니메이션 효과를 만드는 방법
HTML5의 캔버스에서 일반적으로 사용되는 그리기 기법
캔버스를 사용하여 이미지 다운로드 기능을 구현하는 html5의 자세한 예
위 내용은 캔버스 및 이미지 압축을 위한 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!