웹 프론트엔드 JS 튜토리얼 JS 및 Canvas는 이미지 미리보기, 압축 및 업로드 기능을 구현합니다.

JS 및 Canvas는 이미지 미리보기, 압축 및 업로드 기능을 구현합니다.

May 28, 2018 am 10:30 AM
canvas javascript 압축

이 글에서는 이미지 미리보기, 압축, 업로드 기능을 구현하기 위한 JS와 Canvas를 주로 소개합니다. 첫 번째 단계는 사용자가 업로드할 이미지를 선택하는 것입니다. 구체적인 구현 코드는 이 글을 참고해주세요

충격을 진정시키기 위해 먼저 렌더링을 살펴보겠습니다

1단계: 사용자가 필요한 이미지를 선택합니다. to be upload

<input type="file" accept="image/*" type="file"" name="imageFile" onchange="upload()">
로그인 후 복사

이미지가 선택되면 업로드 기능이 실행됩니다. 이 기능을 사용하여 이미지 리소스를 얻어서 압축한 후 캔버스를 사용하여 그려야 합니다. ajax나 다른 방법을 사용하여 업로드할 수도 있습니다.

2단계: 이미지 리소스의 압축 미리보기를 가져와 업로드합니다.

function upload() { 
  let file = document.querySelector('input[type=file]').files[0] // 获取选择的文件,这里是图片类型 
  let reader = new FileReader() 
    reader.readAsDataURL(file) //读取文件并将文件以URL的形式保存在resulr属性中 base64格式 
    reader.onload = function(e) { // 文件读取完成时触发  
      let result = e.target.result // base64格式图片地址  
      var image = new Image() image.src = result // 设置image的地址为base64的地址  
      image.onload = function(){  
        var canvas = document.querySelector("#canvas");  
        var context = canvas.getContext("2d");  
        canvas.width = image.width; // 设置canvas的画布宽度为图片宽度  
        canvas.height = image.height;  
        context.drawImage(image, 0, 0, image.width, image.height) // 在canvas上绘制图片  
        let dataUrl = canvas.toDataURL('image/jpeg', 0.92) // 0.92为压缩比,可根据需要设置,设置过小会影响图片质量  
                                  // dataUrl 为压缩后的图片资源,可将其上传到服务器  
      }  
    } 
 }
로그인 후 복사

이제 이미지가 성공적으로 압축되었는지 비교해 보겠습니다.

원본 이미지 크기:

압축 비율은 0.92로 설정됩니다.

압축률 설정은 0.52

줌 비율을 0.92로 설정했을 때 이미지가 원본 이미지보다 커지는 것이 얼핏 이상하다고 생각하시나요? 실제로 이미지를 base64로 인코딩한 후에는 원본 이미지보다 크기가 커집니다. 구체적인 이유로 base64의 인코딩 원리를 확인할 수 있습니다. 이미지 압축에 성공한 것 같습니다!

참고: 캔버스는 IE9 이하에서는 지원되지 않습니다. 큰 이미지에는 base64를 사용하지 마십시오. 응답 속도에 영향을 미치기 때문입니다.

위 내용은 제가 여러분을 위해 정리한 내용입니다. 앞으로 도움이 되길 바랍니다.

관련 기사:

JavaScript는 생년월일의 정규식을 단계별로 구현합니다.

Vue를 사용하여 동적으로 새로 고침되는 Echarts 구성 요소를 개발하는 방법에 대한 자세한 튜토리얼

selectpicker 드롭다운 상자를 사용하는 방법의 예 부트스트랩에서

위 내용은 JS 및 Canvas는 이미지 미리보기, 압축 및 업로드 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

7-zip 최대 압축률 설정, 7zip을 최소로 압축하는 방법 7-zip 최대 압축률 설정, 7zip을 최소로 압축하는 방법 Jun 18, 2024 pm 06:12 PM

7-zip 최대 압축률 설정, 7zip을 최소로 압축하는 방법

win10 화면 녹화 파일 크기를 줄이는 팁 win10 화면 녹화 파일 크기를 줄이는 팁 Jan 04, 2024 pm 12:05 PM

win10 화면 녹화 파일 크기를 줄이는 팁

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법

중국 교육분야 캔버스의 발전 동향과 향후 전망 중국 교육분야 캔버스의 발전 동향과 향후 전망 Jan 17, 2024 am 10:22 AM

중국 교육분야 캔버스의 발전 동향과 향후 전망

JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법 JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법 Jan 05, 2024 pm 01:37 PM

JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법

Linux에서 패키징과 압축의 차이점을 올바르게 이해하는 방법 Linux에서 패키징과 압축의 차이점을 올바르게 이해하는 방법 Feb 20, 2024 pm 05:33 PM

Linux에서 패키징과 압축의 차이점을 올바르게 이해하는 방법

winrar 64비트-winrar의 압축을 푸는 방법은 무엇입니까? winrar 64비트-winrar의 압축을 푸는 방법은 무엇입니까? Mar 18, 2024 pm 12:55 PM

winrar 64비트-winrar의 압축을 푸는 방법은 무엇입니까?

폴더를 압축하여 wps로 보내는 방법 폴더를 압축하여 wps로 보내는 방법 Mar 20, 2024 pm 12:58 PM

폴더를 압축하여 wps로 보내는 방법

See all articles